带有 Jersey 2 ClassNotFoundException 的 REST 应用程序:com.sun.jersey.spi.container.servlet.ServletContainer
REST app with Jersey 2 ClassNotFoundException : com.sun.jersey.spi.container.servlet.ServletContainer
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>
遗失的神器是什么? 1.8 的 Jersey-server 有 ServletContainer class。
看起来 class 已移至:
org.glassfish.jersey.servlet.ServletContainer
虽然我还没有验证它们是否具有相同的语义,所以可能需要额外的迁移步骤。
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>
遗失的神器是什么? 1.8 的 Jersey-server 有 ServletContainer class。
看起来 class 已移至:
org.glassfish.jersey.servlet.ServletContainer
虽然我还没有验证它们是否具有相同的语义,所以可能需要额外的迁移步骤。