2009-09-15 72 views
2

我试图运行与junit4.7和有一些困难来的示例测试。Junit和Java类路径的困境 - 操作系统X

java是尊重我的CLASSPATH

[email protected] ~/Desktop> export CLASSPATH= 
[email protected] ~/Desktop> echo $CLASSPATH 

[email protected] ~/Desktop> java junit.textui.TestRunner junit.samples.AllTests 
Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/TestRunner 
[email protected] ~/Desktop> source /etc/profile 
[email protected] ~/Desktop> echo $CLASSPATH 
:/Library/Java/Extensions/junit/:/Library/Java/Extensions/junit/junit.jar 
[email protected] ~/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是一个符号链接。可以吗?

+0

如果将-classpath var添加到命令行并直接指定jar,会发生什么情况? – akf 2009-09-15 01:17:17

+0

与-cp和未设置的$ CLASSPATH即使不使用符号链接,我也会得到相同的结果。 – ashgromnies 2009-09-15 16:28:29

回答

5

尝试将junit JAR文件直接放入扩展目录中,而不是为其创建子目录。我只是复制了JUnit-4.6.jar到/图书馆/的Java/Extenstions目录并没有问题

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

删除从Extensions目录结果库预期的异常执行的TestRunner类

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

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

但看着java man page for mac os x似乎并没有这样的限制。

+0

我没有符号链接,我仍然得到完全相同的问题。 – ashgromnies 2009-09-15 16:23:40

0

有些事情要调查:

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

+0

是的,junit.jar的权限为755. CLASSPATH由/ etc/profile导出。取消设置CLASSPATH并使用-cp给出了相同的结果。领先的结肠似乎也不会影响它。 – ashgromnies 2009-09-15 16:30:19

5

好吧,我刚刚下载的JUnit 4.7,解压压缩文件,更改目录到文件夹,并成功运行下面的命令:

$ 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) 
3

你建立自己的JAR?这看起来像是没有注释的JAR。

如果编译

javac -proc none ... 

JUnit的你会得到这个错误。