java - 类相关时如何在java中加载.class文件?
问题描述
我正在尝试使用 java 类加载器从特定路径(包)加载一组 .class 文件。问题是:当这些类中的一个与后一个类或另一个包中的类相关时,类加载器会抛出 NoClassDefFoundError。如何解决这个问题呢?这是我的代码
public ArrayList<Class<?>> readFiles(String nomeFile) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
File f = new File(nomeFile);
String[] files = f.list();
for (int i = 0; i < files.length; i++) {
if (files[i].endsWith(".class")) {
Class<?> mycls;
String fileName = files[i];
String fnm=nomeFile+"/"+fileName;//file canonical name.class
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
InputStream in = new FileInputStream(fnm);
byte [] buff = new byte[4096];
while (true) {
int c = in.read(buff);
if (c == -1) break;
out.write(buff, 0, c);
}
mycls = defineClass(null, out.toByteArray(), 0, out.toByteArray().length);
System.out.println(mycls.getCanonicalName()+" class is loaded");
classes.add(mycls) ;
}
}
return classes;
}
解决方案
推荐阅读
- php - 如何解析内部重定向
- rabbitmq - RabbitMQ + MassTransit:如何从处理中取消排队的消息?
- animation - 任何人都可以帮助我理解 lua 中的这个动画 2d 代码吗?
- python - 如何通过 Selenium 和 Python 输入搜索文本并从搜索结果中检索值
- excel - Excel/VBA - 在求解器循环中更新 SUMPRODUCT(和其他)选择器
- javascript - 我正在使用 map 来渲染数组,但它总是给出最后一个元素
- android - 从 SQLite 表中获取价值
- javascript - 加载组件后,我无法读取状态,状态正在正确更改
- arrays - .push() 在构造函数中不起作用?
- c# - ASP.NET Core 2.1:将客户端证书添加到已注册的类型化 HTTP 客户端