我们的build.xml文件包含以下内容:
<path id="our.classpath">
<fileset dir="${in.libs}"/>
<fileset file="/home/ouruser/fortify/Core/lib/sourceanalyzer.jar"/>
</path>
<target name="compile">
<pathconvert property="test" refid="our.classpath"/>
<echo message="CLASSPATH=${test}"/>
<javac debug="true"
debuglevel="source,lines,vars"
destdir="${out.classes}"
includeAntRuntime="no"
fork="false"
source="1.7" target="1.7">
<src path="${src1.dir}"/>
<src path="${src2.dir}"/>
<classpath refid="our.classpath"/>
<compilerarg value="-Xlint:-path"/>
<compilerarg line="-proc:none"/>
<compilerarg line="-s "${out.classes}""/>
</javac>
</target>
<target name="fortify">
<antcall target="compile">
<param name="build.compiler" value="com.fortify.dev.ant.SCACompiler"/>
</antcall>
</target>
运行
ant fortify
时,得到以下输出:fortify:
compile:
[echo] CLASSPATH=<a long list of jar files snipped>:/home/ouruser/fortify/Core/lib/sourceanalyzer.jar
BUILD FAILED
/home/ouruser/build.xml:542: The following error occurred while executing this line:
/home/ouruser/build.xml:230: Class not found: com.fortify.dev.ant.SCACompiler
从
echo
输出中可以看到,sourceanalyzer.jar文件位于javac
任务使用的类路径中。当我运行
jar -tvf /home/ouruser/fortify/Core/lib/sourceanalyzer.jar | grep SCACompiler.class
时,将列出SCACompiler类:8408 Fri Apr 04 11:17:26 EDT 2014 com/fortify/dev/ant/SCACompiler.class
那么,为什么蚂蚁说
Class not found: com.fortify.dev.ant.SCACompiler
? 最佳答案
代替com/fortify/dev/ant/SCACompiler.class
类,使用
com.fortify.dev.ant.SourceanalyzerTask