Java URLClassLOader无法从jar动态加载类
我在Java URLClassLOader无法从jar动态加载类,java,urlclassloader,dynamic-class-loaders,Java,Urlclassloader,Dynamic Class Loaders,我在loadClass中得到ClassNotFoundException 我已经尝试了代码的几种变体,例如 URLClassLoader child; try { child = new URLClassLoader(new URL[]{myJar.toURI().toURL()}, Test2.class.getClassLoader()); child.loadClass("com.bla.bla.StringUtilService"); } c
loadClass
中得到ClassNotFoundException
我已经尝试了代码的几种变体,例如
URLClassLoader child;
try {
child = new URLClassLoader(new URL[]{myJar.toURI().toURL()}, Test2.class.getClassLoader());
child.loadClass("com.bla.bla.StringUtilService");
} catch (MalformedURLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
但是所有的结果都进入ClassNotFoundException
我曾尝试在Eclipse中调试,但类装入器实例无法从jar中装入类。类向量为空。该类是url中dir的直接子类,因此不需要包 在不带软件包的情况下尝试此操作。像这样:
URL[] urls = { new URL("jar:file:" + "E:\\Works\\Workspace\\JUnit_Proj\\client.jar"+"!/") };
URLClassLoader cl = URLClassLoader.newInstance(urls);
URLClassLoader child;
try {
child = new URLClassLoader(new URL[]{myJar.toURI().toURL()}, Test2.class.getClassLoader());
child.loadClass("StringUtilService");
} catch (MalformedURLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
另外,请这样尝试:
URL[] urls = { new URL("jar:file:" + "E:\\Works\\Workspace\\JUnit_Proj\\client.jar"+"!/") };
URLClassLoader cl = URLClassLoader.newInstance(urls);
URLClassLoader child;
try {
child = new URLClassLoader(new URL[]{myJar.toURI().toURL()}, Test2.class.getClassLoader());
child.loadClass("StringUtilService");
} catch (MalformedURLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
解决方案来自:使用URLClassLoader的不同构造函数成功
URLClassLoader child;
try {
child = new URLClassLoader(new URL[]{myJar.toURI().toURL()}, getClass().class.getClassLoader());
child.loadClass("StringUtilService");
} catch (MalformedURLException | ClassNotFoundException ex) {
ex.printStackTrace();
}
myJar的类型是什么?@Henry:java.io.File。也尝试使用JarFile。是否有人已成功地从JAR动态加载类?请阅读以下内容: