前缀为ant classpath而不是append

时间:2014-07-11 12:14:26

标签: java ant classpath

以下是针对此问题的示例ant文件。

目标" test1"被称为" test"使用antcall。现在,当我有一些具有相同的完全限定类名的类时,我希望首先加载来自test1.jar的类,但看起来test1.jar附加到类路径,因此挑选来自test.jar的类。

有没有办法重置/清除目标test1的类路径或将test1.jar添加到类路径中,以便加载它的类。

<project name="TestProj" basedir=".">  
  <target name="test">      
    <java inputstring="" fork="true" failonerror="true" dir=".">
      <classpath>
        <fileset dir="C:/bb/" includes="test.jar"/>
      </classpath>      
    </java>
  </presetdef> 
  <antcall target="test1"/>
  </target>

  <target name="test1"> 
    <java inputstring="" fork="true" failonerror="true" dir=".">         
      <classpath>       
        <path location="c:/test1.jar"/>
      </classpath>
      <jvmarg line="-Xms64m -Xmx512m"/>
      <jvmarg line="-Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true"/>
    </java>
  </presetdef>
  </target>
</project>

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

  <path id="test.classpath">
    <fileset dir="C:/bb/" includes="test.jar"/>
    <path refid="compile.classpath"/>
  </path>

  <path id="test1.classpath">
    <pathelement location="c:/test1.jar"/>
  </path>

<project name="TestProj" basedir=".">  
  <target name="test">      
    <java inputstring="" fork="true" failonerror="true" dir=".">
      <classpath>
        <path refid="test.classpath"/>
      </classpath>      
    </java>
  </presetdef> 
  <antcall target="test1"/>
  </target>

  <target name="test1"> 
    <java inputstring="" fork="true" failonerror="true" dir=".">         
      <classpath>       
        <path refid="test1.classpath"/>
      </classpath>
      <jvmarg line="-Xms64m -Xmx512m"/>
      <jvmarg line="-Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true"/>
    </java>
  </presetdef>
  </target>