[英]java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
[英]Use Ant to build junit test with initializationError: java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
這是來自junit測試報告的故障跟蹤:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
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.reflect.Constructor.newInstance(Constructor.java:526)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
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)
這是我的build.xml:
<project name="Ant-Test-JUnit" default="main">
<description>
JUnit Test on MyMath
</description>
<property name="src.dir" location="src"/>
<property name="bin.dir" location="bin"/>
<!-- Variables used for JUnit testin -->
<property name="test.dir" location="src" />
<property name="test.report.dir" location="testreport" />
<path id="test.classpath">
<pathelement location="${bin.dir}" />
<pathelement location="../../../../plugins/org.junit_4.11.0.v201203080030/junit.jar" />
<pathelement location="../../../../plugins/org.hamcrest.core_1.3.0.v201303031735.jar"/>
</path>
<!-- =================================
target: main
================================= -->
<target name="main" depends="compile, junit">
<echo message="Junit Test :)"/>
</target>
<!-- - - - - - - - - - - - - - - - - -
target: compile
- - - - - - - - - - - - - - - - - -->
<target name="compile" depends="clean, makedir">
<javac includeantruntime="false" srcdir="${src.dir}" destdir="${bin.dir}">
<classpath refid="test.classpath"/>
</javac>
</target>
<!-- - - - - - - - - - - - - - - - - -
target: clean, makedir
- - - - - - - - - - - - - - - - - -->
<target name="clean">
<delete dir="${bin}"/>
<delete dir="${test.report.dir}" />
</target>
<target name="makedir">
<mkdir dir="${bin.dir}"/>
<mkdir dir="${test.report.dir}" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: junit
- - - - - - - - - - - - - - - - - -->
<target name="junit" depends="compile">
<junit printsummary="yes" fork="true" haltonfailure="yes">
<classpath refid="test.classpath" />
<formatter type="xml" />
<batchtest todir="${test.report.dir}">
<fileset dir="${src.dir}">
<include name="**/*UnitTest*.java" />
</fileset>
</batchtest>
</junit>
</target>
我已經將Junit_4.11 jar添加到Preference-> Ant-> Runtime-> Global Entries並將org.hamcrest。*包添加到Preference-> JUnit-> Add Packages(但這不能解決NoClassDefFoundError:org /的問題hamcrest /自我描述)
如果我直接在eclipse中使用JUnit插件運行UnitTest * .java,它將運行並顯示所有通過的測試。
誰能幫我找出解決方案? 謝謝。
找到了問題。 這是由錯誤的路徑位置引起的。 我只是將path元素更改為正確的位置並解決了。 螞蟻只需要正確的路徑。 每次檢查位置是否正確。
更換
<pathelement location="../../../../plugins/org.junit_4.11.0.v201203080030/junit.jar" />
<pathelement location="../../../../plugins/org.hamcrest.core_1.3.0.v201303031735.jar"/>
與
<pathelement location="/Applications/eclipse/plugins/org.junit_4.11.0.v201303080030/junit.jar"/>
<pathelement location="/Applications/eclipse/plugins/org.hamcrest.core_1.3.0.v201303031735.jar"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.