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
中得到loadClass
。我尝试了几种代码变体,例如
URL[] urls = { new URL("jar:file:" + "E:\\Works\\Workspace\\JUnit_Proj\\client.jar"+"!/") };
URLClassLoader cl = URLClassLoader.newInstance(urls);
但是所有结果都放入
ClassNotFoundException
!我已经尝试在Eclipse中调试,但是类加载器实例无法从jar中加载类。 Vector类为空。
最佳答案
使用URLClassLoader的其他构造函数成功。 try { File jarFile = new File("D:\\Workspace\\Test\\Test.jar"); URLClassLoader loader = new URLClassLoader(new URL[]{jarFile.toURI().toURL()}); Class.forName("com.bla.bla.HelloWorld", true, loader); System.out.println("Success"); loader.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }