当前位置: 首页 > 知识库问答 >
问题:

如何将导入的jar文件添加到eclipse中的WEB-INF/lib中以进行构建?

拓拔坚
2023-03-14

我知道有关这方面的问题已经得到了回答,但在我的搜索过程中,我还没有遇到这个问题得到了回答。

我一直试图将导入的JAR文件包含在spring应用程序的构建(如下所示)中,但我所做的一切都不是解决方案。在使用Tomcat和Ant构建Eclipse时,我收到“Package dousnot exist”错误,因为它在WEB-INF/lib文件夹中找不到JAR文件(显然)。Eclipse不允许我将文件从引用的库实用程序库拖放到任何需要的文件夹中。当我尝试配置构建路径时,我会添加外部JAR,文件所在的目录路径会显示在libraries选项卡中的JAR旁边。publish/export依赖关系设置为web-inf/lib文件夹(我已经读过),将所有JAR文件直接添加到tomcat/lib文件夹(不应该这样做)可以解决问题,但对我来说并非如此。我将JAR的部署程序集路径设置为/WEB-INF/lib,但没有运气。我试过重启Eclipse,但没有成功。我创建了一个新的动态web项目,没有运气。我解压缩了war文件,但没有找到JAR文件,这是意料之中的。我相信我的环境变量是从

我已经多年没有使用Eclipse和Spring应用程序了,所以我希望我错过了重要的一步。

备注:这是一个Spring教程,我一直在使用它来重新使用Spring。Eclipse version 4.3.0 Tomcat version 6 Ant version 1.8.4-作为Eclipse下载的插件提供

<project name="springapp1" basedir="." default="usage">
<property file="build.properties"/>

<property name="lib.dir" value="C:/Eclipse/Tomcat/lib"/>
<property name="webapps.dir" value="C:/Eclipse/Tomcat/webapps"/>

<property name="src.dir" value="src"/>
<property name="web.dir" value="WebContent"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
<property name="name" value="springapp1"/>

<path id="master-classpath">
    <fileset dir="${web.dir}/WEB-INF/lib">
        <include name="*.jar"/>
    </fileset>
    <!-- We need the servlet API classes: -->
    <!--  * for Tomcat 5/6 use servlet-api.jar -->
    <!--  * for other app servers - check the docs -->

    <!--<fileset dir="${appserver.lib}">-->
    <fileset dir="${lib.dir}">
        <include name="servlet*.jar"/>
    </fileset>
    <pathelement path="${build.dir}"/>
</path>

<target name="usage">
    <echo message=""/>
    <echo message="${name} build file"/>
    <echo message="-----------------------------------"/>
    <echo message=""/>
    <echo message="Available targets are:"/>
    <echo message=""/>
    <echo message="build     --> Build the application"/>
    <echo message="deploy    --> Deploy application as directory"/>
    <echo message="deploywar --> Deploy application as a WAR file"/>
    <echo message="install   --> Install application in Tomcat"/>
    <echo message="reload    --> Reload application in Tomcat"/>
    <echo message="start     --> Start Tomcat application"/>
    <echo message="stop      --> Stop Tomcat application"/>
    <echo message="list      --> List Tomcat applications"/>
    <echo message=""/>
</target>

<target name="build" description="Compile main source tree java files">
    <mkdir dir="${build.dir}"/>
    <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
           deprecation="false" optimize="false" failonerror="true">
        <src path="${src.dir}"/>
        <classpath refid="master-classpath"/>
    </javac>
</target>

<target name="deploy" depends="build" description="Deploy application">
    <copy todir="${webapps.dir}/${name}" preservelastmodified="true">
        <fileset dir="${web.dir}">
            <include name="**/*.*"/>
        </fileset>
    </copy>
    <echo message="Deploy Completed."/>
</target>

<target name="deploywar" depends="build" description="Deploy application as a WAR file">
    <war destfile="${name}.war"
         webxml="${web.dir}/WEB-INF/web.xml">
        <fileset dir="${web.dir}">
            <include name="**/*.*"/>
        </fileset>
    </war>
    <copy todir="${webapps.dir}" preservelastmodified="true">
        <fileset dir=".">
            <include name="*.war"/>
        </fileset>
    </copy>
</target>

<path id="catalina-ant-classpath">
    <!-- We need the Catalina jars for Tomcat -->
    <!--  * for other app servers - check the docs -->
    <fileset dir="C:/Eclipse/Tomcat/lib">
        <include name="catalina-ant.jar"/>
    </fileset>
</path>

<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>

<target name="install" description="Install application in Tomcat">
    <install url="${tomcat.url}"
             username="${tomcat.username}"
             password="${tomcat.password}"
             path="/${name}"
             war="${name}"/>
</target>

<target name="reload" description="Reload application in Tomcat">
    <reload url="${tomcat.url}"
             username="${tomcat.username}"
             password="${tomcat.password}"
             path="/${name}"/>
</target>

<target name="start" description="Start Tomcat application">
    <start url="${tomcat.url}"
             username="${tomcat.username}"
             password="${tomcat.password}"
             path="/${name}"/>
</target>

<target name="stop" description="Stop Tomcat application">
    <stop url="${tomcat.url}"
             username="${tomcat.username}"
             password="${tomcat.password}"
             path="/${name}"/>
</target>

<target name="list" description="List Tomcat applications">
    <list url="${tomcat.url}"
             username="${tomcat.username}"
             password="${tomcat.password}"/>
</target>

共有1个答案

陈扬
2023-03-14

将需要放在Eclipse项目的WebContent/Web-inf/lib产品下的已部署webapp的类路径中(Web-inf/lib)的JAR删除。你要做的就是这些。

如果您已经将它们添加到项目的构建路径中,那么从那里删除它们:webcontent/web-inf/lib下的所有内容都会自动添加到构建路径中。

 类似资料:
  • 问题内容: 我正在使用Eclipse,我需要能够将Java库(JAR文件)添加到Web应用程序的文件夹中。我该如何实现? 问题答案: 将jar文件添加到您的WEB-INF / lib文件夹中。 在Eclipse中右键单击您的项目,然后转到“构建路径>配置构建路径” 添加“ Web应用程序库”库 这将确保所有WEB-INF / lib jar都包含在类路径中。

  • 我在webapp/WEB-INF/lib/文件夹下添加了一个依赖项。 当我使用maven构建时,我希望在war中将它复制到WEB-INF/lib,而不是WEB-INF/classes/WEB-INF/lib。我正在寻找这是使用maven本身来完成的。 我已经在pom文件中提到了打包作为战争,但是依赖项没有被复制。我是不是在pom文件里漏掉了什么。我已经复制了下面的pom: 附上战争内容截图。

  • 我是新手。与Gradle我有多个项目构建文件。大多数项目构建文件都经过了适当的配置,工作良好,并生成了正确的输出。我正在尝试将其中一个项目从ANT build转换为Gradle build。我能够编译Java文件,并且能够生成WAR归档。 我在生成的WAR文件中注意到的一件事是,WEB-INF/lib目录中包含了额外的JAR文件。当我从ANT build system构建项目时,只有很少的jar文

  • 根据这个问题,我创建了一个实现Catalina LifecycleListener类的类。 如何在Tomcat启动时运行脚本? 当我将JAR文件放置在webapps/root/web-inf/lib中时,Tomcat启动失败,出现类未找到的异常: java.lang.ClassNotFoundException:Net.Company.Tomcat.StartupEventHookListener

  • null 图像尚不允许:-( 我注意到在另一个post评论(在Eclipse中映射多个ivy文件)中,它们提到只使用1个ivy.xml--但我不太确定如何实现? 哦,我也注意到了这一点:IvyDE+WTP:如何解决WTP忽略ivy库的问题?-然而,我的项目没有使用正确的方面,我宁愿不添加它们。 我再次尝试只添加一个ivy.xml。接下来是Project properties>Ivy>Retriev

  • 我生成了一个WAR文件,在它的WEB-INF/lib文件夹中有一个名为xyz.jar的jar。此jar在构建过程中作为依赖项生成。现在我需要把这个罐子复制到一个文件夹里,说abc里面的战争。我怎样才能做到这一点?我尝试使用maven-resources-plugin的copy-resources,但它似乎不起作用,因为复制将在war构建之前完成。但是这个jar只在构建过程中生成。谢了。