2015-02-05 72 views
0

所以我最近开始使用maven来管理依赖关系,并开始尝试使用Jersey来构建REST API。我遇到了一个奇妙的教程here。类似的StackOverFlow问题已发布here,并且第一个接受的响应具有相同的Maven脚本。Jetty,Jersey,&Maven - Spring Error

我将部署到该服务器的码头,所以我用它来安装码头Eclipse插件(Eclipse的码头3.8.0它采用码头-9.2.5)和有没有问题只是过去的servlets。我做了Maven - Clean & Maven - 当我修改该pom.xml文件时,安装,并且所有出现都会在启动时显示的类路径中列出。

所以我不太确定为什么它没有看到SpringServlet。此外,为什么在上面提供的链接中,当他们主要使用Jetty时,他们是否引用GlassFish模块?

的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.foo</groupId> 
    <artifactId>JerseyTest</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <dependencies> 
     <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-server</artifactId> 
     <version>9.2.5.v20141112</version> 
     </dependency> 
     <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-servlet</artifactId> 
     <version>9.2.5.v20141112</version> 
     </dependency> 
     <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>2.7</version> 
     </dependency> 
     <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-servlet-core</artifactId> 
     <version>2.7</version> 
     </dependency> 
     <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-jetty-http</artifactId> 
     <version>2.7</version> 
     </dependency> 
     <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
     <version>2.7</version> 
     </dependency> 
    </dependencies> 
</project> 

错误:

2015-02-05 09:26:09.624:INFO::main: Logging initialized @102ms 
    Configuration: /var/folders/25/_t5gg17n7577_b94gh4nkh700000gn/T/eclipseJettyPlugin.config.JerseyTest.xml 
     Version: 9.2.5.v20141112 
     Context:/
      Port: 8080 
     Classpath: /Users/me/.m2/repository/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.jar 
        /Users/me/.m2/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar 
        /Users/me/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar 
        /Users/me/.m2/repository/javax/ws/rs/javax.ws.rs-api/2.0/javax.ws.rs-api-2.0.jar 
        /Users/me/.m2/repository/org/eclipse/jetty/jetty-continuation/9.1.1.v20140108/jetty-continuation-9.1.1.v20140108.jar 
        /Users/me/.m2/repository/org/eclipse/jetty/jetty-http/9.2.5.v20141112/jetty-http-9.2.5.v20141112.jar 
        /Users/me/.m2/repository/org/eclipse/jetty/jetty-io/9.2.5.v20141112/jetty-io-9.2.5.v20141112.jar 
        /Users/me/.m2/repository/org/eclipse/jetty/jetty-security/9.2.5.v20141112/jetty-security-9.2.5.v20141112.jar 
        /Users/me/.m2/repository/org/eclipse/jetty/jetty-server/9.2.5.v20141112/jetty-server-9.2.5.v20141112.jar 
        /Users/me/.m2/repository/org/eclipse/jetty/jetty-servlet/9.2.5.v20141112/jetty-servlet-9.2.5.v20141112.jar 
        /Users/me/.m2/repository/org/eclipse/jetty/jetty-util/9.2.5.v20141112/jetty-util-9.2.5.v20141112.jar 
        /Users/me/.m2/repository/org/eclipse/persistence/org.eclipse.persistence.antlr/2.5.0/org.eclipse.persistence.antlr-2.5.0.jar 
        /Users/me/.m2/repository/org/eclipse/persistence/org.eclipse.persistence.asm/2.5.0/org.eclipse.persistence.asm-2.5.0.jar 
        /Users/me/.m2/repository/org/eclipse/persistence/org.eclipse.persistence.core/2.5.0/org.eclipse.persistence.core-2.5.0.jar 
        /Users/me/.m2/repository/org/eclipse/persistence/org.eclipse.persistence.moxy/2.5.0/org.eclipse.persistence.moxy-2.5.0.jar 
        /Users/me/.m2/repository/org/glassfish/hk2/external/aopalliance-repackaged/2.2.0/aopalliance-repackaged-2.2.0.jar 
        /Users/me/.m2/repository/org/glassfish/hk2/external/javax.inject/2.2.0/javax.inject-2.2.0.jar 
        /Users/me/.m2/repository/org/glassfish/hk2/hk2-api/2.2.0/hk2-api-2.2.0.jar 
        /Users/me/.m2/repository/org/glassfish/hk2/hk2-locator/2.2.0/hk2-locator-2.2.0.jar 
        /Users/me/.m2/repository/org/glassfish/hk2/hk2-utils/2.2.0/hk2-utils-2.2.0.jar 
        /Users/me/.m2/repository/org/glassfish/hk2/osgi-resource-locator/1.0.1/osgi-resource-locator-1.0.1.jar 
        /Users/me/.m2/repository/org/glassfish/jersey/bundles/repackaged/jersey-guava/2.7/jersey-guava-2.7.jar 
        /Users/me/.m2/repository/org/glassfish/jersey/containers/jersey-container-jetty-http/2.7/jersey-container-jetty-http-2.7.jar 
        /Users/me/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet-core/2.7/jersey-container-servlet-core-2.7.jar 
        /Users/me/.m2/repository/org/glassfish/jersey/core/jersey-client/2.7/jersey-client-2.7.jar 
        /Users/me/.m2/repository/org/glassfish/jersey/core/jersey-common/2.7/jersey-common-2.7.jar 
        /Users/me/.m2/repository/org/glassfish/jersey/core/jersey-server/2.7/jersey-server-2.7.jar 
        /Users/me/.m2/repository/org/glassfish/jersey/ext/jersey-entity-filtering/2.7/jersey-entity-filtering-2.7.jar 
        /Users/me/.m2/repository/org/glassfish/jersey/media/jersey-media-moxy/2.7/jersey-media-moxy-2.7.jar 
        /Users/me/.m2/repository/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar 
        /Users/me/Documents/workspace/JerseyTest/target/classes 
2015-02-05 09:26:09.967:INFO:oejs.Server:main: jetty-9.2.5.v20141112 
2015-02-05 09:26:11.199:WARN:oeja.AnnotationConfiguration:main: ServletContainerInitializers: detected. Class hierarchy: empty 
2015-02-05 09:26:11.382:WARN:oejs.SecurityHandler:main: [email protected]@1ed4004b{/,file:/Users/me/Documents/workspace/JerseyTest/src/main/webapp/,STARTING}{/Users/me/Documents/workspace/JerseyTest/src/main/webapp} has uncovered http methods for path:/
2015-02-05 09:26:11.412:WARN:oejs.BaseHolder:main: 
java.lang.ClassNotFoundException: com.sun.jersey.spi.spring.container.servlet.SpringServlet 

的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"> 


<servlet> 
    <servlet-name>rest.service</servlet-name> 
    <servlet-class> 
     com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name> 
     <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.foo.servlets</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>rest.service</servlet-name> 
    <url-pattern>/service/*</url-pattern> 
</servlet-mapping> 

</web-app> 

谢谢!

+0

关于“glassfish”,它似乎只是球衣模块的groupId,而不是真正的GlassFish服务器库。对于主要问题,我看不到任何_jersey-spring_依赖项,所以我想问题来自那里。在这里看到关于使用Spring的Jersey:https://jersey.java.net/documentation/latest/spring.html – Tome 2015-02-05 15:00:11

回答

0

您只是错过了正确的工件。

您的项目中不存在对servlet com.sun.jersey.spi.spring.container.servlet.SpringServlet的引用。

快速搜索com.sun.jersey.spi.spring.container.servlet.SpringServlet on search.maven.org显示包含该类的工件。

您可能要么缺少依赖关系,要么不应该为您设置使用该特定的servlet。由你决定打电话到你想去的地方。

+0

你是完全正确的。我想我只是混合并匹配来自教程的兼容工件。非常感谢! – Deftness 2015-02-09 21:23:07