简体   繁体   English

使用Ant构建带有初始化错误的junit测试:java.lang.NoClassDefFoundError:org / hamcrest / SelfDescribing

[英]Use Ant to build junit test with initializationError: java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing

This is failure trace from junit test report: 这是来自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)

This is my build.xml: 这是我的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>

I've added Junit_4.11 jar to Preference->Ant->Runtime->Global Entries and package org.hamcrest.* to Preference->JUnit->Add Packages(but this doesn't fix the problem of NoClassDefFoundError:org/hamcrest/SelfDescribing) 我已经将Jun​​it_4.11 jar添加到Preference-> Ant-> Runtime-> Global Entries并将org.hamcrest。*包添加到Preference-> JUnit-> Add Packages(但这不能解决NoClassDefFoundError:org /的问题hamcrest /自我描述)

If I run UnitTest*.java using JUnit plugin in eclipse directly, it works and shows all tests passed. 如果我直接在eclipse中使用JUnit插件运行UnitTest * .java,它将运行并显示所有通过的测试。

Could anyone help me figure out the solution? 谁能帮我找出解决方案? Thank you. 谢谢。

Found the problem. 找到了问题。 This is caused by wrong path location. 这是由错误的路径位置引起的。 I just changed the path element to the right location and solve it. 我只是将path元素更改为正确的位置并解决了。 Ant just needs correct path. 蚂蚁只需要正确的路径。 Each time check if the location is right. 每次检查位置是否正确。

replace 更换

<pathelement location="../../../../plugins/org.junit_4.11.0.v201203080030/junit.jar" />     
<pathelement location="../../../../plugins/org.hamcrest.core_1.3.0.v201303031735.jar"/>

with

<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.

相关问题 java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing - java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing IntelliJ java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing - IntelliJ java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing Eclipse中的Junit测试失败,出现java.lang.NoClassDefFoundError:org / hamcrest / SelfDescribing - Junit tests in Eclipse are failing with java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing “线程”main“中的异常 java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing” - “Exception in thread ”main“ java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing” java.lang.NoClassDefFoundError:使用Maven的org / hamcrest / SelfDescribing - java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing using Maven java.lang.NoClassDefFoundError:Intellij中的org / hamcrest / SelfDescribing - java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing in Intellij JUnit抛出java.lang.NoClassDefFoundError:org / hamcrest / MatcherAssert - JUnit throws java.lang.NoClassDefFoundError: org/hamcrest/MatcherAssert java.lang.NoClassDefFoundError: org/hamcrest/Matchers - java.lang.NoClassDefFoundError: org/hamcrest/Matchers 线程“main”中的异常 java.lang.NoClassDefFoundError: org/hamcrest/Matchers - Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/Matchers java.lang.NoClassDefFoundError ANT build - java.lang.NoClassDefFoundError ANT build
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM