【问题标题】:REST app with Jersey 2 ClassNotFoundException : com.sun.jersey.spi.container.servlet.ServletContainer带有 Jersey 2 ClassNotFoundException 的 REST 应用程序:com.sun.jersey.spi.container.servlet.ServletContainer
【发布时间】:2015-10-20 19:04:15
【问题描述】:

POM:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>${jersey.version}</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>${jersey.version}</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-moxy</artifactId>
    <version>${jersey.version}</version>
</dependency>

其中 jersey.version=2.5。

我使用嵌入式码头 (maven-jetty-plugin) 来启动 REST 应用程序。执行 mvn jetty:run 时,出现以下异常。

2015-10-21 00:21:32.883:INFO::jetty-6.1.26
2015-10-21 00:21:33.478:WARN::Failed startup of context org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@782a4fff{/promat,C:\wses\promat\src\main\webapp}
java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:401)
...
...

只要我对球衣使用 1.8 依赖项 - 就没有问题。 这是没有问题的依赖项。

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.8</version>
</dependency>

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.8</version>
</dependency>

什么是丢失的工件? Jersey-server 1.8 有 ServletContainer 类。

【问题讨论】:

  • 您不需要任何其他依赖项。虽然@MatthewMadson 的回答是正确的。我想它可能无法完全解决问题。我的猜测是您在 web.xml 中使用了所有 Jersey 1.x 配置。
  • 为了帮助迁移,我建议您发布您的 web.xml。

标签: maven jersey jersey-2.0


【解决方案1】:

看来该课程已移至:

org.glassfish.jersey.servlet.ServletContainer

虽然我尚未验证它们是否具有相同的语义,但可能需要额外的迁移步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2016-05-15
    • 2015-07-07
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    相关资源
    最近更新 更多