【问题标题】:Jersey Services with Tomcat and Eclipse使用 Tomcat 和 Eclipse 的 Jersey 服务
【发布时间】:2014-01-14 02:11:56
【问题描述】:

我正在使用 Jersey 2.0(我从 http://repo1.maven.org/maven2/org/glassfish/jersey/bundles/jaxrs-ri/2.5/jaxrs-ri-2.5.zip 下载)开发休息服务,并且我正在使用 Tomcat 7.0.47。我从 Eclipse 运行 Tomcat,我的机器是 Mac。

我正在使用 Eclipse 工具来生成 WAR 并部署服务。

这是我的 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" 
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>MyServices</display-name> 
    <servlet>
  <servlet-name>Jersey REST Service</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.service.services.Services</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>Jersey REST Service</servlet-name>
  <url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>

我将所有 Jersey jar 都包含在 WEB-INF/lib 中,除了 javax.servlet-api-3.0.1.jar 它在 Apache/lib 中 当我在Tomcat中部署时,它显示了一个非常奇怪的错误,原因是:

Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ... 70 more

【问题讨论】:

  • 你确定你了解ClassNotFoundExceptions吗?我问是因为您最近有类似的问题...stackoverflow.com/questions/20762707/…
  • 呵呵,当然,我的朋友。我和 Resteasy 有同样的问题。
  • 当然,我也是这样做的:在 web-inf/lib 等中包含库
  • 好的,那么也许你想看看tomee.apache.org/apache-tomee.html。这是顶部的tomcat + javaee 库。特别看一下 JAX-RS 版本。 tomee.apache.org/downloads.html
  • Mac 下能用吗??哦,我需要使用 Tomcat,因为它是使用 Tomcat 的项目的一部分 :(

标签: java eclipse jersey tomcat7 jersey-2.0


【解决方案1】:

它适用于我在 PC 上。您是否将 eclipse 项目设为 maven 项目?如果你这样做,那么你可以使用 org.glassfish.jersey.bundles jaxrs-ri 2.5 版(或任何一个)作为你的 pom 中的依赖项,然后当你从 eclipse 运行-> maven-install 时,它将构建一个带有其中所有必要的依赖项。

【讨论】:

  • 我不使用 maven。使用Tomcat是项目的要求:(
  • 我正在为 Eclipse 使用 m2e(maven to eclipse)插件。这就是让我在 Eclipse 中表现出色的原因。你应该使用它。
  • 但是有必要使用maven生成war文件吗?
  • 嗯,这取决于你是否愿意。
  • 目前我不想在项目中包含 maven。我知道maven,但我不想用
【解决方案2】:

我的解决方案:

  1. 将您从 Jersey 下载的所有库添加到 Tomcat/lib 和 包含在 Jersey .zip 的 /ext 文件夹中
  2. 仅将 Jersey zip 文件的 /lib 文件夹下的库添加到我的项目的 Web-Inf/lib 中
  3. 添加到我的项目 javax.ws.rs-api-2.jar 的 Web-Inf/lib 中,您可以在 Jersey 的 /api 文件夹中找到它

有了这个,我在 Jersey 上运行 Tomcat 就没有问题了。

这是我的 Jersey 2.0 的 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" 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>MyRESTServices</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
        <servlet-name>Jersey Web Application</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.myservice.services</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Web Application</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>

</web-app>

com.myservice.services 是我的服务包

感谢你们的cmets!!

【讨论】:

  • 感谢您指出/ext 文件夹中的罐子,我一开始就错过了。当然,servlet 映射部分非常重要,在 Jersey 入门指南中也没有提及。
  • 感谢@jjmartinez +1
【解决方案3】:

在没有 maven 的情况下将 Jersey 添加到 Eclipse 项目很简单:单击项目的属性,转到 Java 构建路径。点击左侧的添加库,选择用户库。单击下一步后,您将在右上角看到“用户库”。点击那个。单击新建。添加一个名称:例如 jaxrs-ri-2.5。点击添加外部jars,将jars添加到api、lib和ext文件夹中。你完成了。这可能还会将它们包含在您使用 eclipse 制作的任何战争文件中。

为我工作。

【讨论】:

  • 不,在我把问题放在这里之前,我已经完成了所有这些步骤,但没有成功。我必须按照我自己的答案来放置库。
【解决方案4】:

使用 jdk1.7.0_04 并安装 apache-tomcat-7.0.55 并为此设置设置环境变量,并将 eclipse 设置为相同以编译构建和运行时。那么对于 Jax-RS-2.1 来说一切都会好起来的

【讨论】:

    猜你喜欢
    • 2013-07-16
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2018-01-30
    • 2016-11-12
    相关资源
    最近更新 更多