2

我有一个从 Eclipse 成功运行的 junit 测试套件。当我尝试运行 jar 时

java -jar AppTest.jar

我得到以下信息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/runner/JUnitCore
at appdirect.AppTest.main(AppTest.java:18)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.JUnitCore
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 1 more

我知道 jar 已成功创建,因为我正在创建日志(从 AppTest 以编程方式)并回显 $PATH 打印 junit.jar 所在的目录。

我如何确保当我在 Eclipse 中震动时,我拿起了所有的 junit 罐子?

4

4 回答 4

1

您需要将 junit jar 添加到classpath,而不是系统的路径。

一种方法是将类路径设置为指向 junit.jar 和 AppTest.jar 并调用您的 main.jar。

java -cp /path/to/junit.jar:/path/to/AppTest.jar com.example.Main
于 2012-05-16T22:17:04.620 回答
1

信不信由你,这就像确保我在向导中导出为“可运行 Jar”并使用“提取所需库...”选项一样简单。我一直试图将其作为普通罐子导出。

于 2012-05-17T17:57:00.817 回答
1

路径可能会打印你的罐子,但类路径中的罐子。还有一个称为环境变量的环境变量CLASSPATH,您需要在其中附加您的 junit jar 并尝试运行您的AppTest.jar

如何设置类路径

于 2012-05-16T22:22:35.887 回答
1

在主 Jar 的清单中添加对另一个 Jar 的引用。

于 2012-05-16T22:35:53.580 回答