2012-03-26 97 views
1

我从外部.jar文件获取课程时遇到问题。我发现this加载一个外部.jar的方法,但是每当我运行它,我得到一个ClassNotFoundException。以下是我正在使用的代码,here是我正在测试的.jar文件。如果任何人有任何关于如何解决这个问题的想法,请告诉我。谢谢!Java:从外部.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(); 
    } 
} 
+0

这是怎么回事? http://stackoverflow.com/questions/9880385/java-build-path – 2012-03-27 00:40:42

回答

1

尝试打破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位于该位置。

+0

哦,我的天哪,它的工作感谢一百万! – MrDrProfessorTyler 2012-03-27 00:44:06

1

尝试没有瓶子:和/在URL!

+0

不工作:( – MrDrProfessorTyler 2012-03-26 23:51:41

+0

你可以发布修改后的代码吗? – 2012-03-27 00:29:54