Eclipse 无法加载servlet-api.jar

Eclipse 无法加载servlet-api.jar,eclipse,web-applications,tomcat,jar,Eclipse,Web Applications,Tomcat,Jar,我正在运行EclipseIndigo3.7、Tomcat7和SpringMVC框架2.5.6 在我的一个应用程序项目中,出现以下错误消息: nov. 22, 2011 9:06:30 PM org.apache.catalina.loader.WebappClassLoader validateJarFile Infos: validateJarFile(/home/pc/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/

我正在运行EclipseIndigo3.7、Tomcat7和SpringMVC框架2.5.6

在我的一个应用程序项目中,出现以下错误消息:

nov. 22, 2011 9:06:30 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
Infos: validateJarFile(/home/pc/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/SpringMVC/WEB-INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
我已经读到,对于像我这样的web应用程序项目,servlet-api.jar不应该包含在项目构建路径中;是这样吗?我应该把servlet-api.jar放在哪里,因为我的应用程序中有servlet

我还要问:

我经常阅读将jar文件放在WEB-INF/lib文件夹中,有时阅读将它们作为外部jar包含在项目构建路径中,有时阅读将两者同时进行

例如,我读到: -servlet-api.jar已经在Tomcat7/lib目录中,但还需要包含在项目路径中; -MySQL JDBC java驱动程序必须包含在项目路径中,并复制到WEB-INF/lib和Tomcat7/lib目录中

有人能告诉我thruth并帮助我真正理解如何在eclipse的项目中管理«Jar libraries»吗


非常感谢。

tomcat lib目录是tomcat内部使用的库的公共位置,可用于部署在该tomcat实例上的所有应用程序。您可以在这里找到servlet-api.jar,它是tomcat成为servlet引擎的全部组成部分。您可以在这里找到关于tomcat类加载器的更详细的解释:

项目的
/WEB-INF/lib
文件夹包含的库仅对您的WEB应用程序专用,对tomcat上任何其他部署的应用程序都不可见。在这里,您希望为您用来构建web应用程序的技术放置库,例如Spring、JUnit和Hibernate

更新:

在使用Eclipse管理库方面,我强烈建议您使用构建系统(如果您还没有),如ANT或Maven

使用Maven,您可以使用web应用原型在Eclipse中设置项目,并且可以通过项目POM文件相当简单地管理项目的库依赖关系

当涉及到手动管理
WEB-INF/lib
目录时,ANT可能会让您承担更多的“重担”,但您也可以使用ApacheIvy来帮助实现这一点。 一个快速的谷歌搜索将会显示很多关于使用这些工具的教程


希望这有帮助。

tomcat lib目录是tomcat内部使用的库的通用位置,可用于部署在该tomcat实例上的所有应用程序。您可以在这里找到servlet-api.jar,它是tomcat成为servlet引擎的全部组成部分。您可以在这里找到关于tomcat类加载器的更详细的解释:

项目的
/WEB-INF/lib
文件夹包含的库仅对您的WEB应用程序专用,对tomcat上任何其他部署的应用程序都不可见。在这里,您希望为您用来构建web应用程序的技术放置库,例如Spring、JUnit和Hibernate

更新:

在使用Eclipse管理库方面,我强烈建议您使用构建系统(如果您还没有),如ANT或Maven

使用Maven,您可以使用web应用原型在Eclipse中设置项目,并且可以通过项目POM文件相当简单地管理项目的库依赖关系

当涉及到手动管理
WEB-INF/lib
目录时,ANT可能会让您承担更多的“重担”,但您也可以使用ApacheIvy来帮助实现这一点。 一个快速的谷歌搜索将会显示很多关于使用这些工具的教程

希望这有帮助。

  • 我已经读到,对于像我这样的web应用程序项目,servlet-api.jar不应该包含在项目构建路径中;是这样吗?我应该把servlet-api.jar放在哪里,因为我的应用程序中有servlet

    Servlet容器(比如Tomcat)在类路径中有Servlet jar。所以您的应用程序WAR应该排除它

  • 我经常阅读将jar文件放在WEB-INF/lib文件夹中,有时阅读将它们作为外部jar包含在项目构建路径中,有时阅读将两者同时进行

    应用程序引用的JAR通常放在
    WEB-INF/lib
    中。例外情况类似于
    servlet.jar
    。您将在编译时需要它们,但必须将它们排除在最终的战争之外

  • 我已经读到:-servlet-api.jar已经在Tomcat7/lib目录中,但还需要包含在项目路径中-MySQL JDBC java驱动程序必须包含在项目路径中,并复制到WEB-INF/lib和Tomcat7/lib目录中

    这是正确的。为了进一步说明前一个问题的答案,您需要在编译时使用这些JAR,以便能够编译。一些JAR——比如
    servlet api
    ,是由servlet容器提供的

  • 有人能告诉我thruth并帮助我真正理解如何在eclipse的项目中管理«Jar libraries»吗

    构建工具(如Maven)可帮助管理项目的外部库依赖项,并在需要这些依赖项时(仅编译时、编译和测试、运行时等)对其进行细粒度控制

      • 我已经读到,对于像我这样的web应用程序项目,servlet-api.jar不应该包含在项目构建路径中;是这样吗?我应该把servlet-api.jar放在哪里,因为我的应用程序中有servlet

        Servlet容器(比如Tomcat)在类路径中有Servlet jar。所以您的应用程序WAR应该排除它

      • 我经常阅读将jar文件放在WEB-INF/lib文件夹中,有时阅读将它们作为外部jar包含在项目构建路径中,有时阅读将两者同时进行