[英]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”時是否有效? 嘗試刪除類路徑中的前導冒號 - 不應該在那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.