簡體   English   中英

Junit和Java類路徑問題 - OS X.

[英]Junit and Java classpath woes - OS X

我正在嘗試運行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是一個符號鏈接。 這樣可以嗎?

好的,我剛剛下載了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)

嘗試將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

你自己建造了JAR嗎? 這看起來像JAR是在沒有注釋的情況下構建的。

如果您使用編譯JUnit

  javac -proc none ...

你會收到這個錯誤。

要調查的一些事情:

junit.jar文件是否在您指定的位置,是否可讀? CLASSPATH是由/ etc / profile導出的嗎? 在命令行中設置“-cp $ CLASSPATH”時是否有效? 嘗試刪除類路徑中的前導冒號 - 不應該在那里。

使用符號鏈接可能會導致您的問題。 嘗試添加符號鏈接指向的jar並再試一次。

但是,查看mac os xjava手冊頁似乎沒有這樣的限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM