我在玩反射,我想做点东西来加载一个类并打印该类中所有字段的名称。我制作了一个小型的hello world类型的类来检查一些东西:

kent@rat:~/eclipsews/SmallExample/bin$ ls

IndependentClass.class

kent@rat:~/eclipsews/SmallExample/bin$ java IndependentClass

Hello! Goodbye!

kent@rat:~/eclipsews/SmallExample/bin$ pwd

/home/kent/eclipsews/SmallExample/bin

kent@rat:~/eclipsews/SmallExample/bin$

基于以上所述,我得出两个结论:

它存在于/home/kent/eclipsews/SmallExample/bin/IndependentClass.class

有用!(因此它必须是可以由类加载器加载的正确的.class文件)

然后使用反射的代码:(标记导致异常的行)

import java.lang.reflect.Field;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLClassLoader;

public class InspectClass {

@SuppressWarnings("unchecked")

public static void main(String[] args) throws ClassNotFoundException, MalformedURLException {

URL classUrl;

classUrl = new URL("file:///home/kent/eclipsews/SmallExample/bin/IndependentClass.class");

URL[] classUrls = { classUrl };

URLClassLoader ucl = new URLClassLoader(classUrls);

Class c = ucl.loadClass("IndependentClass"); // LINE 14

for(Field f: c.getDeclaredFields()) {

System.out.println("Field name" + f.getName());

}

}

}

但是当我运行它时,我得到:

Exception in thread "main" java.lang.ClassNotFoundException: IndependentClass

at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

at java.lang.ClassLoader.loadClass(ClassLoader.java:251)

at InspectClass.main(InspectClass.java:14)

我的问题:

上面我在做什么错?我如何解决它?

有没有办法加载几个类文件并对其进行迭代?

at java.net.urlclassloader.findclass_如何使用URLClassLoader加载* .class文件?相关推荐

  1. java加载properties文件的几种方式,java高级面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  2. java class文件 代码_java_基础——用代码编译.java文件+加载class文件

    java_基础--用代码编译.java文件+加载class文件 java_基础--用代码编译.java文件+加载class文件 [简单编译的流程] package com.zjm.www.test; ...

  3. Java Class的热替换 自定义ClassLoader加载.class

    本文是java热替换的实验,参考了 Java 类的热替换 -- 概念.设计与实现 http://www.ibm.com/developerworks/cn/java/j-lo-hotswapcls/i ...

  4. Java 错误: 找不到或无法加载主类,问题集合

      正确编译命令: javac Hello.java 正确运行命令: java Hello 错误1:H:\code>java Hello.java 错误: 找不到或无法加载主类 Hello.ja ...

  5. java虚拟机及加载class文件的原理机制

    2019独角兽企业重金招聘Python工程师标准>>> (点击获取更多资料的下载) java 虚拟机 ‎2007‎年‎4‎月‎23‎日,‏‎14:18:00 | chenweicai ...

  6. java错误 找不到或无法加载主类

    java:错误: 找不到或无法加载主类 1.确定JDK版本 ​ 因为随着时间的改变,JDK本身也伴随着更改和变化,在解决这个问题前,我们要确定一下jdk的版本,比较老的版本有老的版本的解决方法,比较新 ...

  7. 常见Java面试题之JVM加载class文件的原理机制

    JVM加载class文件的原理机制 JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的 ...

  8. java 类加载生命周期_Java类的加载与生命周期

    一.概要: 类的生命周期从类的 加载.连接.初始化 开始,到类的 卸载结束: 二.几个阶段: 加载:查找并加载类的二进制数据.(把类的.class文件的二进制数据读入内存,存放在运行时数据区的方法区: ...

  9. java文件读入原理_描述一下JVM加载class文件的原理机制

    1.JVM 简介 JVM 是我们Javaer 的最基本功底了,刚开始学Java 的时候,一般都是从"Hello World "开始的,然后会写个复杂点class ,然后再找一些开源 ...

  10. java类 连接时机_java类的加载时机

    类加载 它直接表现出来的代码应该是 ClassLoader.getSystemClassLoader().loadClass("com.my.test.AbcClass").所以具 ...

最新文章

  1. zen3架构_AMD Zen3架构处理器的L3缓存或将翻倍到64MB
  2. SpringMVC Ueditor1.4.3 未找到上传数据
  3. SAP内向交货详解 Details on SAP inbound delivery
  4. COBBLER无人值守安装-----已用真实服务器测试
  5. 实录:menu.1st配置错误导致从多路径启动失败
  6. python样本不均衡_使用Python中的smote处理正负样本之间的不平衡,python,实现,失衡,问题...
  7. linux之gdb基本调试命令和使用总结
  8. qt中QTreeWidget控件的使用
  9. appium+python自动化57-chromedriver与chrome版本
  10. Linux 常用命令随笔(二)
  11. NGINX+PHP+ZABBIX,推荐
  12. python二次开发ug_CAD二次开发(UG/Proe/其他) - 随笔分类 - 白途思 - 博客园
  13. Python 中使用 ImageJ 详细教程
  14. 模拟CMOS集成电路放大器总结(1)
  15. apache的IO包中的FileUtils方法的使用
  16. 2018华为软件精英挑战赛经验(一)
  17. Docker知识点总结
  18. Python 运维自动化之服务器信息采集
  19. 单枪匹马年赚一个亿?靠的是任务管理做得漂亮!
  20. 集群部署时的分布式 Session 如何实现?

热门文章

  1. python3爬虫初探(五)之从爬取到保存
  2. 软件设计原则(二)单一职责原则 -Single Responsibility Principle
  3. 一个注解搞懂 Sentinel,@SentinelResource总结
  4. 图推荐算法在EE问题上的应用
  5. 分布式系统理论之租约机制学习
  6. 确保企业的大数据投资达到预期的5种方法
  7. Maximal Rectangle leetcode java
  8. subst命令镜像虚拟磁盘指南(原创)
  9. 我是如何超越PPG的(摘自:IT经理世界;作者:李黎)
  10. JS 中 indexOf 的用户及注意事项