0

我在这里和那里收集了有关从 jar 文件创建和使用类的说明(和代码)。

我创建了一个 Test.java 文件:

package a;
public class Test {
    public String print(){
        return "TestLALALA";
    }   
}

并创建了一个 jar 文件:

jar cvf0 Test.jar Test.java

当我提取 jar(通过命令行)时,该类是完整的。

我将 jar 放在 Eclipse 项目的“libs”文件夹中。我可以在“库”下的项目“构建路径”中看到它。

以下代码遇到 ClassNotFoundException :

URL[] urls = new URL[1];
try {
    File file = new File("C:\\Eclipse\\Demo\\libs\\Test.jar");
    urls[0] = file.toURI().toURL();
} catch (MalformedURLException e1) {
    e1.printStackTrace();
}
URLClassLoader loader = new URLClassLoader (urls);
Class classToLoad = null;
if(loader!=null)
{
    try {
        classToLoad = loader.loadClass("a.Test");
    } catch (ClassNotFoundException e1) {
        e1.printStackTrace();
    }
}

我错过了什么 ?

谢谢!

4

2 回答 2

0

使用 Eclipse 中的 jar 导出来确保它被正确创建。

你可以试试这个:

Test test1 = new Test();
Class.forName("a.Test");

如果要测试动态加载,可以删除 Test test1 ...。但是我真的不明白为什么你用 UrlClassLoader 让它变得如此复杂。

于 2013-04-22T19:06:41.303 回答
0

看起来您只将未编译的 .java 文件添加到 JAR 而不是已编译的 .class 文件。

JAR 中的文件也应该是a/Test.class这样,因此您需要确保该a目录存在于其中以表示包路径。目前,该文件似乎存在于 JAR 的根目录中,而不是存在于子目录中。

于 2013-04-22T18:35:11.837 回答