Eclipse:无法将 jar 加载到 Tomcat WEB-INF/Lib 文件夹中?
Eclipse : Unable to load jar's into the Tomcat WEB-INF/Lib folder ?
当我 运行 Tomcat 使用 eclipse 时,我收到此 tomcat 错误“java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer”:
我看到 eclipse 没有将 jar 包含到 (tomcat 7.0) WEB-INF/Lib 文件夹中,尽管我试过了:
在项目属性下的 "Web Deployment Assembly" 中包含 Maven 依赖项。 (Maven 下载了 POM.xml 中的依赖项,但是这些 jar 没有被 eclipse 获取)
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>
有几处我看错了。
- 您缺少 pom 文件中的
<packaging>
元素。如果要将其部署到 servlet 容器,则包应为 war
。默认为 jar
- 您使用的
jersey-server
没有 ServletContainer
。而是使用 jersey-container-servlet
但是...
开始使用 Jersey 的最简单方法是使用 Maven 原型。
在 Eclipse 中:
- [
File
]→[New
]→[Other
]
- [
Maven
]→[Maven Project
]→下一个
- 保持默认(确保“创建一个简单的项目”是未选中)→下一步
- 在下一个对话框的 "Filter" 字段中,键入
jersey-quickstart-webapp
。加载所有原型可能需要一些时间。您可以在 IDE 最右下角的小进度条中看到原型加载的进度。如果您没有看到进度条并且没有搜索结果,那么很可能您没有原型。在这种情况下,请按照 的第一部分中的说明进行操作
- Select
org.glassfish.jersey.archetypes
版本。应该默认最新版本(此时是2.17)→下一步
- 输入您的 groupId、artifactId 和包 → 完成
那应该会给你一个 运行ning Jersey 入门应用程序,它将 运行 Tomcat
当我 运行 Tomcat 使用 eclipse 时,我收到此 tomcat 错误“java.lang.ClassNotFoundException:org.glassfish.jersey.servlet.ServletContainer”:
我看到 eclipse 没有将 jar 包含到 (tomcat 7.0) WEB-INF/Lib 文件夹中,尽管我试过了:
在项目属性下的 "Web Deployment Assembly" 中包含 Maven 依赖项。 (Maven 下载了 POM.xml 中的依赖项,但是这些 jar 没有被 eclipse 获取)
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>
有几处我看错了。
- 您缺少 pom 文件中的
<packaging>
元素。如果要将其部署到 servlet 容器,则包应为war
。默认为jar
- 您使用的
jersey-server
没有ServletContainer
。而是使用jersey-container-servlet
但是...
开始使用 Jersey 的最简单方法是使用 Maven 原型。
在 Eclipse 中:
- [
File
]→[New
]→[Other
] - [
Maven
]→[Maven Project
]→下一个 - 保持默认(确保“创建一个简单的项目”是未选中)→下一步
- 在下一个对话框的 "Filter" 字段中,键入
jersey-quickstart-webapp
。加载所有原型可能需要一些时间。您可以在 IDE 最右下角的小进度条中看到原型加载的进度。如果您没有看到进度条并且没有搜索结果,那么很可能您没有原型。在这种情况下,请按照 的第一部分中的说明进行操作
- Select
org.glassfish.jersey.archetypes
版本。应该默认最新版本(此时是2.17)→下一步 - 输入您的 groupId、artifactId 和包 → 完成
那应该会给你一个 运行ning Jersey 入门应用程序,它将 运行 Tomcat