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(); }

10-08 12:58