【问题标题】:ant tomcat cant compile missing HttpServlet packageant tomcat 无法编译缺少的 HttpServlet 包
【发布时间】:2018-05-03 23:07:58
【问题描述】:

我正在尝试将 Web 应用程序部署到 tomcat7。我读到tomcat 提供了servlet 库,并通过查看/usr/share/tomcat7/lib 确认了这一点。其中包括:

servlet-api.jar, jsp-api.jar, annotations-api.jar, httpclient-4.5.3.jar httpclient-cache-4.5.3.jar、httpcore-4.4.6.jar、httpclient-4.5.3.jar、 gson-2.6.2.jar

build.xml 的相关(我认为)部分是:

  <path id="compile.classpath">
    <!-- Include all JAR files that will be included in /WEB-INF/lib -->
    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
    <pathelement location="${basedir}/lib/*"/>
    <!-- Include all elements that Tomcat exposes to applications -->
    <fileset dir="${catalina.home}/bin">
      <include name="*.jar"/>
    </fileset>
    <pathelement location="${catalina.home}/lib"/>
    <fileset dir="${catalina.home}/lib">
      <include name="*.jar"/>
    </fileset>
  </path>

为什么应用程序不编译说未知符号?我在项目文件夹 /lib 中也有这些文件:

symbol:   class HttpSession
    [javac]   location: class QuestionPageServlet
    [javac] /var/lib/tomcat7/webapps/FlashcardShark/src/flashcardshark/servlet/QuestionPageServlet.java:53: error: cannot find symbol
    [javac]             String responseMessage = new Gson().toJson("card successfully udpated");
    [javac]                                          ^
    [javac]   symbol:   class Gson
    [javac]   location: class QuestionPageServlet
    [javac] /var/lib/tomcat7/webapps/FlashcardShark/src/flashcardshark/servlet/QuestionPageServlet.java:56: error: cannot find symbol
    [javac]             response.setStatus(HttpServletResponse.SC_ACCEPTED);
    [javac]                                ^
    [javac]   symbol:   variable HttpServletResponse
    [javac]   location: class QuestionPageServlet
    [javac] /var/lib/tomcat7/webapps/FlashcardShark/src/flashcardshark/servlet/QuestionPageServlet.java:66: error: cannot find symbol
    [javac]            HttpSession session = request.getSession();

编辑:我相应地从 oracles 网站集 J2EE_HOME 下载 javaee-8 并将以下内容添加到构建文件的上述部分,但它仍然无法编译:

<path id="compile.classpath">
    <pathelement location="${basedir}/lib/*"/>
    <fileset dir="${catalina.home}/bin">      <include name="*.jar"/>
    </fileset>
    <pathelement location="${catalina.home}/lib"/>
    <fileset dir="${catalina.home}/lib">
      <include name="*.jar"/>
    </fileset>
    <pathelement path = "${env.J2EE_HOME}/${j2ee.jar}"/>
   <fileset dir = "lib">
      <include name = "**/*.jar"/>
   </fileset>
  </path>

【问题讨论】:

    标签: ant


    【解决方案1】:

    我是编写 ant 构建脚本的新手:但这是我为使其编译所做的:

    <javac srcdir="${src.home}"
              destdir="${build.home}/WEB-INF/classes"
                debug="${compile.debug}"
               includes="${basedir}/lib/*"
          deprecation="${compile.deprecation}"
             optimize="${compile.optimize}">
    

    上的包含选项就是这样做的。

    【讨论】:

      猜你喜欢
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 2019-06-22
      • 2020-11-02
      • 1970-01-01
      • 2014-04-05
      相关资源
      最近更新 更多