java - eclipse : Unable to load jar's into the Tomcat WEB-INF/Lib folder ?

标签 java eclipse rest jersey tomcat7

当我使用 eclipse 运行 Tomcat 时,出现此 Tomcat 错误“java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer”:

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

  1. 在项目属性下的“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. 您缺少 <packaging> pom 文件中的元素。如果要将其部署到 servlet 容器,则包应为 war 。默认为jar
  2. 您正在使用jersey-server其中没有 ServletContainer 。而是使用jersey-container-servlet

但是...

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

在 Eclipse 中:

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

这应该会给你一个正在运行的 Jersey 入门应用程序,它将在 Tomcat 上运行

关于java - eclipse : Unable to load jar's into the Tomcat WEB-INF/Lib folder ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29205555/

相关文章:

java - 使用 Jersey 的 JAXRS Rest 服务中的问题

javascript - 如何捕获复选框输入

Java RESTful 返回对象内部的对象,将其作为 toString 而不是转换为 JSON

java - 没有注释的 JAXB Unmarshal

由于外部库,Java 无法在终端中编译

java - 维护java中项目的顺序

java - NullPointerException:我如何给它分配一些东西,使它不为空?

java - 将所有 jar 合并或合并到一个可执行 jar 中

java - 通过 Maven 导入的类出现 NoClassDef 错误

eclipse - Eclipse 中的 headless 构建 : how to retrieve result value