我在从外部 .jar 文件获取类时遇到问题。我发现this此处加载外部 .jar 的方法,但每当我运行它时,我都会收到 ClassNotFoundException。下面是我正在使用的代码和 here是我正在测试的 .jar。如果有人知道如何解决此问题,请告诉我。谢谢!
这是我的代码:
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
public void loadJar() throws MalformedURLException {
URL[] classes = {new URL("jar:file://test.jar!/")};
URLClassLoader child = new URLClassLoader (classes, this.getClass().getClassLoader());
try {
Class classToLoad = Class.forName ("test.PackageTest", true, child);
Method method = classToLoad.getDeclaredMethod ("test");
Object instance = classToLoad.newInstance();
Object result = method.invoke(instance);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
最佳答案
尝试将 URL[] classes = {new URL("jar:file://test.jar!/")};
分解为几条语句
File myFile = new File("test.jar");
URL myJarFileURL = new URL("jar", "", "file:" + myFile.getAbsolutePath() + "!/");
URL[] classes = {myJarFileURL};
您可以将 myFile.getAbsolutePath() 发送到记录器或控制台,并查看类加载器期望在哪里找到 test.jar。然后确保 test.jar 位于该位置。
关于Java:从外部 .jar 获取类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9881393/