2

在我的java web项目中,有类似的代码<T>,在ant脚本中,javac使用JDK编译java代码,编译不成功。

后来,我知道它必须使用eclipse JDT来编译。

并且,在 Eclipse 中,ant 脚本可以运行成功。当运行如下:

右键单击 build.xml ---> Run ---> Run as ---> External Tools Configurations,单击 JRE,选择“Run in the same JRE as the workspace”。

之后,ant就可以运行成功了,在eclipse中。

但是,我想写一个 .bat 和 .sh 文件来调用 ant 脚本,来编译、war、部署和启动 Tomcat。所以,蚂蚁应该从命令运行。我尝试了更多,总是发生错误:找不到类:org.eclipse.jdt.core.JDTCompilerAdapter

PS,我已经将eclipse插件中有关JDT的jar文件复制到ant_home/lib目录。

希望得到您的回应。提前致谢!

构建.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>

`

4

3 回答 3

1

不要使用 Eclipse IDE 中的 ant 从命令行使用。

单独下载 ant 并将其解压缩到 - C:\apache\ant - 对于 windows,并将其 bin 目录放在您的 PATH 中。它会附带一些需要添加到您的 CLASSPATH 的罐子。

对于 Mac OSX,“sudo port install ant”会处理一切。

于 2012-05-09T03:16:28.130 回答
1

从 Eclipse 下载 ecj*.jar 并放在 ANT_HOME/lib 下。确保在 shell 环境下设置了 ANT_HOME,或者你应该在 shell 的 CLASSPATH 中设置 ecj*.jar。(否则,可能仍会抛出 Class not found: org.eclipse.jdt.core.JDTCompilerAdapter。)

于 2013-04-19T04:05:30.917 回答
0

作为记录,当在上下文中(即在多线程情况下)使用该<javac>编译器适配器的任务时,我也会随机收到此错误(经常工作) 。<parallel>

看起来编译器适配器 jar 被暂时锁定,线程类加载器或其他东西无法访问。parallel>除了删除 <执行之外,我还没有解决方法。

于 2014-09-29T20:29:10.887 回答