Java Ant Error : ClassNotFoundException



我是Ant的初学者,但是当我尝试使用JUnit时我有一个问题:

<target name="test" depends="compile" description="JUnit Tests">
    <junit printsummary="yes" failureproperty="junit.failure" fork="yes">
        <classpath refid="junit.classpath"/>
        <classpath path="${myAntTestBin.dir}"/>
        <formatter type="plain" usefile="false"/>
        <test name="fr.isima.myAntTest.ProjectTest"/>
    </junit>
</target>

但是现在,我有这些错误:

test:
    [junit] Running fr.isima.myAntTest.ProjectTest
    [junit] Testsuite: fr.isima.myAntTest.ProjectTest
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
    [junit]
    [junit]     Caused an ERROR
    [junit] fr.isima.myAntTest.ProjectTest
    [junit] java.lang.ClassNotFoundException: fr.isima.myAntTest.ProjectTest
    [junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    [junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    [junit]     at java.security.AccessController.doPrivileged(Native Method)
    [junit]     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    [junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    [junit]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    [junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    [junit]     at java.lang.Class.forName0(Native Method)
    [junit]     at java.lang.Class.forName(Class.java:186)
    [junit]
    [junit] Test fr.isima.myAntTest.ProjectTest FAILED

有什么问题吗?

我怀疑这就是问题所在:

<test name="${myAntTestBin}/ProjectTest.class"/>

查找类的名称,而不是位置:

<test name="ProjectTest"/>

…如果合适的话,使用包名来限定它(当然,您确实应该这样做)。例如:

<test name="foo.bar.ProjectTest" />

还有,正如JB Nizet提到的,这是:

<classpath path="${myAntTestBin}"/>
应:

<classpath path="${myAntTestBin.dir}"/>

匹配你的声明:

<property name="myAntTestBin.dir" value="../myAntTest/bin/fr/isima/myAntTest"/>
编辑:现在你已经编辑了问题(完全),看起来你有错误的类路径,它实际上应该是:
<property name="myAntTestBin.dir" value="../myAntTest/bin"/>

类路径应该是包含类的目录结构的。这就像在普通Java中运行:

java -cp bin foo.bar.Baz

如果目录结构为bin/foo/bar包含Baz.class

相关内容

  • 没有找到相关文章

最新更新