【问题标题】:Why am I getting import errors while using "ant" command build.xml?为什么在使用“ant”命令 build.xml 时出现导入错误?
【发布时间】:2017-12-26 09:33:33
【问题描述】:

我在包含 build.xml 的目录中使用“ant”命令,但导入语句出错。当它到达这一行时,

    <!-- compile.gui -->
<target name="compile.gui" depends="test.properties,compile.api">
    <javac srcdir="${src}" destdir="${build.classes}"
        classpathref="gui.class.path" debug="on" target="1.8" includeantruntime="false">
        <include name="eu/lt4el/gui/**" />
    </javac>
</target>

它引用了一个java文件

    package eu.lt4el.gui;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import eu.lt4el.common.DocumentStatus;
import eu.lt4el.AppInterface;
import eu.lt4el.defcontext.Definition;
import org.apache.log4j.Logger;
public class LTStartPage extends HttpServlet
{ . . . .

当它尝试编译 java 文件时出现以下错误:

     compile.gui:
[javac] Compiling 1 source file to /home/ufuoma/Downloads/ltserver/build/classes
[javac] /home/ufuoma/Downloads/ltserver/src/eu/lt4el/gui/LTStartPage.java:3: error: package javax.servlet does not exist
[javac] import javax.servlet.*;
[javac] ^
[javac] /home/ufuoma/Downloads/ltserver/src/eu/lt4el/gui/LTStartPage.java:4: error: package javax.servlet.http does not exist
[javac] import javax.servlet.http.*;
[javac] ^
[javac] /home/ufuoma/Downloads/ltserver/src/eu/lt4el/gui/LTStartPage.java:13: error: cannot find symbol
[javac] public class LTStartPage extends HttpServlet
[javac]                                  ^
[javac]   symbol: class HttpServlet
[javac] /home/ufuoma/Downloads/ltserver/src/eu/lt4el/gui/LTStartPage.java:17: error: cannot find symbol
[javac]     protected HttpSession session;
[javac]               ^
[javac]   symbol:   class HttpSession
[javac]   location: class LTStartPage
[javac] /home/ufuoma/Downloads/ltserver/src/eu/lt4el/gui/LTStartPage.java:33: error: cannot find symbol
...
...
[javac] 17 errors
BUILD FAILED
/home/ufuoma/Downloads/ltserver/build.xml:305: Compile failed; see the compiler error output for details.

我安装了 Tomcat 和 JRE 8,并且正在运行 Ubuntu,但构建失败。我不知道为什么我有错误。 谢谢

编辑* 类路径在build.xml文件中定义如下:

    <!-- class path for gui -->
<path id="gui.class.path">
    <pathelement path="${env.CATALINA_HOME}/common/lib/servlet-api.jar"/>
    <pathelement path="${lib}/log4j-1.2.14.jar"/>
</path>

【问题讨论】:

  • 在您的 build.xml 文件中,变量 gui.class.path 没有 Java servlet 库,或者它指向不存在的路径。没有更多细节,我们只能说。
  • 我要把build.xml文件的所有代码都放上去吗?
  • gui.class.path 在 build.xml 中是如何定义的?我们不需要整个 build.xml 文件,但您需要了解它是如何定义的,以及它是否依赖于其他文件。例如,您可能正在从另一个文件(有时名为 build.properties)加载属性。
  • 我已经从xml文件中添加了gui.class.path的描述
  • 好的,所以构建依赖于环境变量 CATALINA_HOME。对于安装了默认 Tomcat(即通过包管理器安装)的 Ubuntu 系统,您需要在用于运行 ant 命令的同一命令行窗口中执行 export CATALINA_HOME /usr/share/tomcat8。

标签: xml ubuntu tomcat servlets ant


【解决方案1】:

需要根据我的安装参数正确设置类路径。 那是:

    <!-- class path for gui -->
<path id="gui.class.path">
    <pathelement path="${env.CATALINA_HOME}/common/lib/servlet-api.jar"/>
    <pathelement path="${lib}/log4j-1.2.14.jar"/>
</path>

而且我的 Tomcat 安装没有/common。所以改成:

    <!-- class path for gui -->
<path id="gui.class.path">
    <pathelement path="${env.CATALINA_HOME}/lib/servlet-api.jar"/>
    <pathelement path="${lib}/log4j-1.2.14.jar"/>
</path>

解决了问题。

【讨论】:

    【解决方案2】:

    只要运行:

    $ export CATALINA_HOME=/opt/tomcat
    $ ant
    

    【讨论】:

    • 并运行“$CATALINA_HOME/bin/startup.sh”,我得到以下信息: 使用 CATALINA_BASE: /opt/tomcat 使用 CATALINA_HOME: /opt/tomcat 使用 CATALINA_TMPDIR: /opt/tomcat/temp 使用JRE_HOME:/usr/lib/jvm/java-8-openjdk-amd64 使用 CLASSPATH:/opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar Tomcat 已启动。
    • 抱歉 - 是我的错字 - 我已修复。但看起来你的 Ubuntu 不在正常位置,所以我也更新了答案。
    • 我实际上在不久前运行了“export CATALINA_HOME=/opt/tomcat”。它工作正常。但是当我运行“ant”时,我仍然得到同样的错误。
    • 那么您要查找的库在哪里?阅读 build.xml 所说的 - 它正在寻找 ${env.CATALINA_HOME}/common/lib/servlet-api.jar。现在我会给你一个提示——该路径的“公共”部分意味着你的 build.xml 期望 servlet 库位于与正常不同的位置。所以做一个ls /opt/tomcat,看看你有什么。接下来查看/usr/share/tomcat 或/usr/share/tomcat8(如果存在)。您需要找到该库,并希望在上述路径之一上。
    • ls /opt/tomcat 给出:bin lib logs RELEASE-NOTES temp work conf LICENSE NOTICE RUNNING.txt webapps。 usr/share/tomcat 或 usr/share/tomcat8 不存在。
    猜你喜欢
    • 2015-02-01
    • 2019-07-25
    • 2013-10-13
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2021-08-22
    • 2015-01-16
    相关资源
    最近更新 更多