在现有JVM中运行时,Ant JUnit任务NoClassDefFoundError

时间:2013-05-09 12:24:35

标签: java maven ant junit classloader

我选择 JUnit Ant任务解决方案,我通过任务元素提供 JUnit库

<target name="test" depends="compile-tests" description="Run unit tests">
    <junit printsummary="true" haltonfailure="true">
        <classpath refid="test.classpath" />
        <test name="com.package.TestClass" />
    </junit>
</target>

使用的重要类路径是:

<path id="test.compile.classpath">
    <path refid="compile.classpath" />
    <path refid="test.lib.classpath" />
    <pathelement location="${build.classes.dir}" />
</path>

<path id="test.classpath">
    <path refid="test.compile.classpath" />
    <pathelement path="${test.classes.dir}" />
</path>

junit.jar引用的是 Ant Maven任务

<artifact:dependencies pathId="test.lib.classpath">
    <dependency groupId="junit" artifactId="junit" version="4.11" />
</artifact:dependencies>

现在,问题是我在运行此任务时遇到异常:

java.lang.NoClassDefFoundError: junit/framework/TestListener

解决方案是将 fork =“true”属性添加到任务中:

<junit printsummary="true" haltonfailure="true" fork="true">

我的问题是:

  • 为什么不运行新的JVM实例,JUnit Ant任务就会失败 在运行时包含junit.jar?
  • 这个运行时到底是什么?它是执行Ant的那个 脚本?是不是可以将jar附加到运行时?我想到了 将是标准类加载。

0 个答案:

没有答案