我有一个小问题。我学习java SE并找到类ClassLoader。我尝试在下面的代码中使用它:
我正在尝试使用 URLClassLoader 在运行时动态加载类。
URLClassLoader urlcl = new URLClassLoader(new URL[] {new URL("file:///I:/Studia/PW/Sem6/_repozytorium/workspace/Test/testJavaLoader.jar")});
Class<?> classS = urlcl.loadClass("michal.collection.Stack");
for(Method field: classS.getMethods()) {
System.out.println(field.getName());
}
Object object = classS.newInstance();
michal.collection.Stack new_name = (michal.collection.Stack) object;
java虚拟机看不到我的类,并且出现以下异常:
Exception in thread "main" java.lang.Error: Unresolved compilation problems: michal cannot be resolved to a type michal cannot be resolved to a type at Main.main(Main.java:62)
你知道我该如何解决这个问题吗?
上面的答案都是错误的,他们没有理解根本问题。您的 main 指的是由一个类加载器加载的 Stack 类。您的 urlclassloader 正在尝试加载具有相同名称的类。您不能将加载的类加载器强制转换为引用的类加载器,因为它们不相同,它们属于不同的类加载器。您可以打印每个的 has 代码以查看它们的不同。相等性测试还将显示 cclass 引用不同。你的问题可能是因为可以找到sstack引用的依赖类,这会导致NoClassDefErrors
等等。你的 main 可能会因类广播异常而失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)