在我的java web项目中,有像<T>
这样的代码,在ant脚本中,javac使用JDK编译java代码,并且无法编译成功。
后来,我知道必须使用eclipse JDT进行编译。
并且,在eclipse中,ant脚本可以运行成功。当这样运行时:
右键单击build.xml ---&gt;运行---&gt;以---&gt;运行在“外部工具配置”中,单击“JRE”,选择“在与工作区相同的JRE中运行”。
之后,蚂蚁可以在日食中成功运行。
但是,我想写一个.bat和.sh文件来调用ant脚本,编译,编辑,部署和启动Tomcat。 所以,ant应该从命令运行。我尝试了更多,总是发生错误: 未找到类:org.eclipse.jdt.core.JDTCompilerAdapter
PS,我在eclipse插件中将关于JDT的jar文件复制到ant_home / lib目录。
祝你的回答。提前谢谢!
的build.xml
`
<tstamp>
<format property="build.time" pattern="yyyy-MM-dd" />
</tstamp>
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${catalina.home}/lib">
<include name="*.jar" />
</fileset>
<fileset dir="${ant.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="clear">
<delete dir="${build.dir}" />
<delete dir="${dist.dir}" />
<delete file="${catalina.home}/webapps/${webapp.name}.war" />
<delete dir="${catalina.home}/webapps/${webapp.name}" />
</target>
<target name="init" depends="clear">
<mkdir dir="${build.dir}/classes" />
<mkdir dir="${dist.dir}" />
</target>
<target name="compile" depends="init">
<echo message="begin compile..." />
<javac srcdir="${src.dir}" destdir="${build.dir}/classes"
includeantruntime="false" nowarn="on"
source="1.6" target="1.6" deprecation="true" debug="true"
encoding="UTF-8" classpathref="project.classpath">
<compilerarg line="-Xlint:unchecked" />
</javac>
<copy todir="${build.dir}">
<fileset dir="${src.dir}">
<include name="**/*.xml" />
<include name="**/*.properties" />
<include name="**/*.sql" />
</fileset>
<fileset dir="${config.dir}">
<include name="**/*.xml" />
<include name="**/*.properties" />
<include name="**/*.sql" />
</fileset>
</copy>
<echo message="end compile..." />
</target>
<target name="war" depends="compile">
<echo message="begin war..." />
<war destfile="${dist.dir}/${webapp.name}.war" basedir="${webRoot.dir}"
webxml="${webRoot.dir}/WEB-INF/web.xml">
<lib dir="${lib.dir}" />
<classes dir="${build.dir}/classes" />
<fileset dir="${webRoot.dir}">
<include name="***.*" />
</fileset>
</war>
<echo message="end war..." />
</target>
<target name="deploy" depends="war">
<echo message="begin deploy..." />
<copy file="${dist.dir}/${webapp.name}.war" todir="${catalina.home}/webapps" />
<echo message="end deploy..." />
</target>
</project>
`
答案 0 :(得分:1)
请勿使用eclipse IDE中的ant从命令行使用。
单独下载ant并将其解压缩到 - C:\ apache \ ant - 用于windows,并将其bin目录放在PATH中。它会附带一些需要添加到CLASSPATH的罐子。
对于Mac OSX,“sudo port install ant”可以处理所有事情。
答案 1 :(得分:1)
从Eclipse下载ecj * .jar并放入ANT_HOME / lib下。 确保在shell环境下设置了ANT_HOME,或者应该在shell上的CLASSPATH中设置ecj * .jar。 (否则,找不到类:org.eclipse.jdt.core.JDTCompilerAdapter可能仍然被抛出。)
答案 2 :(得分:0)
对于记录,当在<javac>
上下文中使用<parallel>
任务与该编译器适配器时,即在多线程情况下,我也会随机获得此错误(通常更常用)。
看起来好像编译器适配器jar暂时被锁定,并且线程类加载器无法访问它。我还没有解决方法,除了删除&lt; parallel>
执行。