【问题标题】:ANT war file compile failing when using Tomcat jar使用 Tomcat jar 时 ANT 战争文件编译失败
【发布时间】:2021-02-02 16:14:14
【问题描述】:

我正在尝试使用 ANT 来构建一个战争文件。部分脚本编译了一个名为 HelloClient.java 的源代码 这是一个 Servlet,我正在使用来自 Tomcat 的 javax.servlet.* jar

1/ 当我在命令行中使用javac HelloClient.java 时,我收到错误cannot find symbol public class HelloClient extends HttpServlet

2/ 当我在命令行中使用javac -cp C:\Users\jon\apache-tomcat-9.0.39\lib\servlet-api.jar HelloClient.java 时,它会编译

ant war在命令行给出与上面1完全相同的错误,即error: cannot find symbol public class HelloClient extends HttpServlet

通过 IntelliJ,我得到了类似的结果。当我使用 Build Module 选项时,IntelliJ 会编译类并将所有文档和 web.xml 转储到生产环境中(我已将 Tomcat Lib 目录添加到库中)。

当我尝试运行我的 ANT 脚本时,我得到了与上面相同的所有错误,我认为 javac 抱怨没有它需要的 jar。

我的 CLASSPATH 中有 C:\Users\jon\apache-tomcat-9.0.39\lib

我应该在这里做些什么,以便 ANT 驱动的编译可以看到所需的 jars?

【问题讨论】:

    标签: tomcat servlets ant


    【解决方案1】:

    通过一些 ANT 类路径工作解决。

       <target name="setup" depends="clean">
        <mkdir dir="${lib-dir}"/>
        <copy file="C:\Users\jon\apache-tomcat-9.0.39\lib\servlet-api.jar" todir="${lib- 
       dir}"/>
       </target>   
    
      <path id="build.classpath">
        <!-- include all jars in the jar directory and all sub-directories -->
        <fileset dir="${lib-dir}">
            <include name="**/*.jar" />
        </fileset>
       </path>
    
    <target name="compile" depends="setup">
        <mkdir dir="${build-dir}"/>
        <javac includeantruntime="false" srcdir="${src-dir}" destdir="${build-dir}"
        classpathref="build.classpath">
        </javac>
    </target>
    

    【讨论】:

      最近更新 更多