2015-04-26 38 views
4

我想在我的項目上運行一個簡單的單元測試https://github.com/cdwijayarathna/oj4jjunit提供了錯誤java.lang.NoClassDefFoundError:junit/framework/JUnit4TestAdapterCache

我添加了junit-4.12.jar和ant-junit4.jar到lib文件夾。

但是當我運行「rake run_tests」時,在給定的報告位置出現以下錯誤。

java.lang.NoClassDefFoundError: junit/framework/JUnit4TestAdapterCache 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:195) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 

這是什麼原因?我該如何解決這個問題?

回答

4

我有相同的異常,通過在Debian上運行ant來運行junit。通過將junit4.jar包含在$ CLASSPATH環境變量中,我可以讓它運行。這意味着jvm沒有選擇junit4.jar。 /usr/share/java/junit4.jar路徑特定於Debian的junit包,因此您需要根據需要進行替換。

$ export CLASSPATH=/usr/share/java/junit4.jar 
    $ ant test 
0

設置ANT_HOME您的$CLASSPATH環境變量。

0

我使用特定的罐子上一個項目運行測試,這裏是解決這一問題的命令行:

$ CLASSPATH=lib/hamcrest-core-1.3.jar:lib/junit-4.12.jar ant my-junit-target 

我已經寫了一個小殼封裝這個命令。