Junit和Java类路径问题 - OS X.

时间:2009-09-15 00:49:33

标签: java macos junit classpath

我正在尝试运行junit4.7附带的示例测试并遇到一些困难。

java尊重我的CLASSPATH

me@dinosaurhunter ~/Desktop> export CLASSPATH=
me@dinosaurhunter ~/Desktop> echo $CLASSPATH

me@dinosaurhunter ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner
me@dinosaurhunter ~/Desktop> source /etc/profile 
me@dinosaurhunter ~/Desktop> echo $CLASSPATH
:/Library/Java/Extensions/junit/:/Library/Java/Extensions/junit/junit.jar
me@dinosaurhunter ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests
Exception in thread "main" java.lang.NoClassDefFoundError: junit/framework/Test
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:164)
    at junit.runner.BaseTestRunner.loadSuiteClass(BaseTestRunner.java:207)
    at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:100)
    at junit.textui.TestRunner.start(TestRunner.java:179)
    at junit.textui.TestRunner.main(TestRunner.java:138)

但正如您所看到的,它无法找到junit/framework/Test ...我查看了/Library/Java/Extensions/junit/junit.jar但它已包含在内。

/Library/Java/Extensions/junit/junit.jar是一个符号链接。那可以吗?

5 个答案:

答案 0 :(得分:5)

好的,我刚刚下载了JUnit 4.7,解压缩了zip文件,将目录更改为该文件夹并成功运行了以下命令:

$ java -cp .:junit-4.7.jar junit.textui.TestRunner junit.samples.AllTests 
.........................................
.........................................
.........................................
.......
Time: 3.255

OK (130 tests)

那是在OSX上。

我认为在你的例子中,你的类路径有点搞砸了。试试这个:

.:/Library/Java/Extensions/junit:/Library/Java/Extensions/junit/junit.jar

看到差异?我添加了.(当前目录),并从junit目录中删除了尾部斜杠。

更新:我刚用符号链接进行测试,看起来也有效:

$ ln -s junit-4.7.jar junit.jar
$ java -cp .:junit.jar junit.textui.TestRunner junit.samples.AllTests 
.........................................
.........................................
.........................................
.......
Time: 2.569

OK (130 tests)

答案 1 :(得分:5)

尝试将junit JAR文件直接放入Extensions目录,而不是为其创建子目录。我刚刚将junit-4.6.jar复制到/ Library / Java / Extenstions目录并执行了TestRunner类而没有任何问题

% java junit.textui.TestRunner
Usage: TestRunner [-wait] testCaseName, where name is the name of the TestCase class

从Extensions目录中删除库会导致预期的异常

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner

答案 2 :(得分:3)

你自己建造了JAR吗?这看起来像没有注释构建JAR。

如果使用

编译JUnit
  javac -proc none ...

您将收到此错误。

答案 3 :(得分:0)

要调查的一些事项:

junit.jar文件是否在您指定的位置,是否可读? CLASSPATH是由/ etc / profile导出的吗? 在命令行中设置“-cp $ CLASSPATH”时是否有效? 尝试删除类路径中的前导冒号 - 不应该在那里。

答案 4 :(得分:-1)

使用符号链接可能会导致您的问题。尝试添加符号链接指向的jar并重试。

然而,看java man page for mac os x似乎没有这样的限制。