【问题标题】:build error in eclipse(helios) for dynamic web project在 eclipse(helios) 中为动态 Web 项目构建错误
【发布时间】:2011-09-26 11:06:44
【问题描述】:

我在 eclipse(helios) 中有一个简单的动态 Web 项目。在这个我有一个jsp,它要求输入uname 和密码,然后它进入一个只打印uname 的servlet。我正在使用 Ant 构建战争和部署。

我已经对路径进行了以下设置:

  1. ANT_HOME = C:\apache-ant-1.7.0
  2. JAVA_HOME = C:\java\jdk1.6
  3. 类路径 = .;%JAVA_HOME%\lib;%ANT_HOME%\lib
  4. 路径 = %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%JAVA_HOME%\bin;%Path%;%ANT_HOME%\bin

tomcat 安装在 c:\tomcat

我在 WEB-INF\lib 中有以下文件

jstl-1.1.2.jar、jstl.jar、servlet-api.jar、标准-1.0.6.jar

现在,当我尝试进行 ant 构建时,它给了我编译错误,错误如下: 包 javax.servlet.http 不存在,包 javax.servlet.http 不存在,包 javax.servlet.http 不存在等等

谁能帮我解决这个问题? 是类路径有问题还是找不到jar?

谢谢

构建文件

<property name="build.dir" value="build" />
<property name="src.dir" value="src" />
<property name="dist.dir" value="c:\tomcat\webapps" />
<property name="jardir.dir" value="C:\tomcat\common\lib" />

<target name="clean" description="Removes temporary directories">
    <delete dir="${build.dir}" />
    <delete dir="bin" failonerror="false" />
    <delete dir="${dist.dir}/jar" failonerror="false" />
    <delete dir="${dist.dir}/FirstTestApp" failonerror="false"/>
</target>

<target name="init" description="Creates temporary directories">
    <mkdir dir="${build.dir}/classes" />
    <mkdir dir="${dist.dir}" />
</target>   

<target name="compile" depends="init"  description="compiles files">
    <javac debug="true" deprecation="true"
    destdir="${build.dir}/classes" srcdir="${src.dir}"
    verbose="true" classpath="${jardir.dir}" />
</target>   

<target name="war" depends="compile">
    <war destfile="${dist.dir}\FirstTestApp.war" basedir="${build.dir}" webxml="web\WEB-INF\web.xml">

        <lib dir="web/WEB-INF/lib" includes ="**/*.jar"/>                   

        <!--<fileset dir="web/jsp" includes="*.jsp" />-->

        <fileset dir="web" includes="js/**,images/**,css/**,jsp/**" />
    </war>
</target>

【问题讨论】:

    标签: eclipse jar classpath eclipse-3.6 helios


    【解决方案1】:

    Ant 对 Web 项目一无所知。它不会自动在类路径中包含 WEB-INF/lib 中的 jar。您必须在 javac 任务使用的类路径中明确包含所有必需的 jar,以编译您的类。

    请注意,至少 servlet-api.jar 不应该在 WEB-INF/lib 中,因为它显然在 tomcat 的根类路径中。

    【讨论】:

    • 我从 WEB-INF/lib 中删除了 servlet-api.jar 并检查了它具有 c:\tomcat\common\lib 文件的构建路径。在此之后,我尝试再次进行构建,但同样的问题仍然存在。
    • Ant 和 eclipse 是两个非常不同的东西。如果您使用 ant 构建,它不会神奇地从 Eclipse 获取构建路径。正如我在回答中所写,您必须在您的 ant 构建文件的 javac 任务中定义一个显式的类路径。向我们展示您的 ant 构建文件。
    • 正如你所说,我在 build.xml 的 javac 命令的类路径中添加了 jar,但它仍然不起作用。
    • 我正在附加构建文件看看它
    • jar 文件本身必须在类路径中。不仅仅是包含 jar 文件的目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2014-07-08
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多