以下是针对此问题的示例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>
答案 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>