2009-09-15 47 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的你會得到這個錯誤。