在编译java文件时遇到问题(与ANT和XML相关)



基本上,当我执行命令ant -f mybuild.xml clean junit-TestRunner时,我在java文件中得到很多错误,它在junit导入时给出错误,如:

    java:6: error: package org.junit does not exist

这是我的xml文件的一部分,它在测试编译时给我错误:

<path id="test.classpath">
   <pathelement location="${build.test.dir}"/>
</path>
<target name="test-compile" depends="test-init">
      <javac srcdir="test" 
      destdir="buildtest"
      includeAntRuntime="No"/>
</target>
<target name="junit-TestRunner" depends="test-compile">
  <java classname="org.junit.runner.JUnitCore" 
        classpathref="C:junit-4.10">
    <arg value="org.example.antbook.junit.SimpleTest"/>
  </java>
  <java classname="org.junit.runner.JUnitCore" 
        classpathref="test.classpath">
    <arg value="org.eclipseguide.persistence.FilePersistenceServicesTest"/>
  </java>
</target>

我假设它找不到我的junit-4.10.jar文件所在的目录。我已经在'classpathref'中改变了这一点,但仍然给我相同的错误。

有什么建议吗?

不要把junit.jar放进你的$ANT_HOME里。如果这样做,当您安装新版本的Ant时,或者当其他人签出该文件时,就会出现问题。这是你的问题:

<target name="junit-TestRunner" depends="test-compile">
   <java classname="org.junit.runner.JUnitCore" 
       classpathref="C:junit-4.10">
       <arg value="org.example.antbook.junit.SimpleTest"/>
   </java>

classpathref对类路径的引用。它是单独定义的,它不是一个jar或目录。

例如,在调用<java>任务之前,我首先定义我的类路径引用:
<classpath id="test.classpath">
    <pathelement path="C:/junit-4.10"/>
</classpath>

这定义了一个引用到这个叫做test.classpath的类路径。你现在可以在<java>任务中使用它:

<target name="junit-TestRunner" depends="test-compile">
    <classpath id="test.classpath">
        <pathelement path="C:/junit-4.10"/>
    </classpath>
   <java classname="org.junit.runner.JUnitCore" 
       classpathref="test.classpath">
       <arg value="org.example.antbook.junit.SimpleTest"/>
   </java>

你可以做的另一件事是简单地包括classpath,这样你就不必在一开始就定义对它的引用:

<target name="junit-TestRunner" depends="test-compile">
   <java classname="org.junit.runner.JUnitCore">
       <arg value="org.example.antbook.junit.SimpleTest"/>
       <classpath>
           <pathelement path="C:/junit-4.10"/>
       </classpath>
   </java>
顺便说一下,避免使用反斜杠。它可能会导致问题,因为它有时可以用作引号字符。相反,请像上面那样使用正斜杠。

我怀疑:

classpathref="C:junit-4.10"

应该指向上面的jar文件或classes子目录

您检查过本页的第二个"备注"了吗?我认为最简单的方法是#1,将这些jar放在${ANT_HOME}/lib文件夹中。这样你就不需要指定任何类路径。

将以下目标添加到您的构建中。

<target name="bootstrap" description="Install build dependencies">
    <mkdir dir="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.ant/lib/junit.jar" src="http://search.maven.org/remotecontent?filepath=junit/junit/4.11/junit-4.11.jar"/>
</target>

这将把junit jar安装到一个用于第三方依赖的ANT标准位置。

相关内容

  • 没有找到相关文章

最新更新