代码之家  ›  专栏  ›  技术社区  ›  Alferd Nobel

Eclipse:无法将jar加载到Tomcat WEB-INF/Lib文件夹中?

  •  1
  • Alferd Nobel  · 技术社区  · 11 年前

    当我使用eclipse运行tomcat时,我收到了一个tomcat错误“java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer”:

    我看到eclipse没有将jar包含在(tomcat 7.0)WEB-INF/Lib文件夹中,尽管我尝试了这样做:

    1. 在Project属性下的“Web部署程序集”中包含Maven依赖项。(Maven下载了POM.xml中的依赖项,但eclipse没有发现这些jar)

      POM.xml如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.dcr.javacode.rest.jersey</groupId>
      <artifactId>JAXRS-HelloJerseyExample</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      
      <repositories>
    		<repository>
    			<id>maven2-repository.java.net</id>
    			<name>Java.net Repository for Maven</name>
    			<url>http://download.java.net/maven/2/</url>
    			<layout>default</layout>
    		</repository>
    	</repositories>
      
      <dependencies>
        	<dependency>
                <groupId>org.glassfish.jersey.core</groupId>
                <artifactId>jersey-server</artifactId>
                <version>2.17</version>
            </dependency>        
      </dependencies>
    </project>

    web.xml,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>JAXRS-HelloJerseyExample</display-name>
     	<servlet>
        	<servlet-name>JerseyRESTService</servlet-name>
        	<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        
        	<init-param>
    	        <param-name>jersey.config.server.provider.packages</param-name>
    	        <param-value>com.dcr.javacode.rest.jersey</param-value>
        	</init-param>
        	
        	<load-on-startup>1</load-on-startup>
      	</servlet>
      	<servlet-mapping>
        	<servlet-name>JerseyRESTService</servlet-name>
        	<url-pattern>/rest/*</url-pattern>
      	</servlet-mapping> 	
    </web-app>
    1 回复  |  直到 11 年前
        1
  •  0
  •   Community Mohan Dere    9 年前

    有几件事我看错了。

    1. 你错过了 <packaging> 元素。如果要将其部署到servlet容器,那么包应该 war 。默认值为 jar
    2. 您正在使用 jersey-server 它没有 ServletContainer 。请改用 jersey-container-servlet

    但是

    开始使用Jersey最简单的方法是使用Maven原型。

    在Eclipse中:

    1. [ File ] → [ New ] → [ Other ]
    2. [ Maven ] → [ Maven Project ] → 下一个
    3. 保留默认值(确保“创建一个简单的项目 未检查的 ) → 下一个
    4. 在下一个对话框的“过滤器”字段中,键入 jersey-quickstart-webapp 。加载所有原型可能需要一些时间。您可以在IDE右下角的一个小进度条中看到原型加载的进度。如果你没有看到进度条,也没有搜索结果,那么很可能你没有原型。在这种情况下,请按照 this answer
    5. 选择 org.glassfish.jersey.archetypes 版本它应该默认为最新版本(此时为2.17)→ 下一个
    6. 键入groupId、artifactId和package→ 完成

    这将为您提供一个运行在Tomcat上的Jersey starter应用程序

    推荐文章