2016-08-04 50 views
0

我设法缩小了为什么我无法编译我的项目。这是一个maven项目,意在成为一个api REST,在eclipse上完成,它的想法是在tomcat v6上运行。如何配置球衣以避免com.sun.jersey.spi.container.servlet.ServletContainer产生问题?

我对pom.xml中此配置:

<!-- Jersey --> 
    <dependency> 
    <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.19</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-servlet</artifactId> 
     <version>1.19</version> 
    </dependency> 

使我有以下错误:

java.lang.ClassCastException: com.sun.jersey.spi.container.servlet.ServletContainer cannot be cast to javax.servlet.Servlet 当我试图消除新泽西州的servlet,因为我已经看到了人们说,他们制造麻烦,我只需要球衣,服务器等等,我得到这个:

java.lang.ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer 

我已经用了很多搞乱角落找寻配置,试图遵循不同的解决方案,但我相信问题在于此。任何人都可以告诉我如何正确配置这个?

我的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.CC.enterprise.rest.jersey</groupId> 
    <artifactId>CC-HelloWorld</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 

<distributionManagement> 
    <!-- Will be used when it is NOT a snapshot version --> 
    <repository> 
     <id>releases</id> 
     <name>RepositoryProxy</name> 
     <url>edited</url> 
    </repository> 
    <!-- Will be used when IT IS a snapshot version --> 
    <snapshotRepository> 
     <id>snapshots</id> 
     <name>RepositoryProxy</name> 
     <url>edited</url> 
    </snapshotRepository> 
</distributionManagement> 


<dependencies> 

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

    <!-- MongoDB --> 
    <dependency> 
     <groupId>org.mongodb</groupId> 
     <artifactId>mongodb-driver</artifactId> 
     <version>3.2.2</version> 
    </dependency> 

    <!-- JSON --> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-json</artifactId> 
     <version>1.9</version> 
    </dependency> 

    <!-- Servlet API --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 

</dependencies> 

我的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>Restful Web Application</display-name> 



<servlet> 
    <servlet-name>jersey-helloworld-serlvet</servlet-name> 
    <servlet-class> 
     com.sun.jersey.spi.container.servlet.ServletContainer 
    </servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.CC.enterprise.rest.jersey</param-value> 
    </init-param> 
    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>jersey-helloworld-serlvet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

回答

4

尝试取出jersey-server依赖。只能使用jersey-servlet依赖性:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-servlet</artifactId> 
    <version>1.19</version> 
</dependency> 

,并确保com.sun.jersey依赖使用相同的版本。在撰写本文时,最新版本是1.19.1

如果是新项目,请忘记旧的Jersey 1.x并去Jersey 2.x

+0

如果我这样做,我得到:java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer。除了jersey-json之外,如果我删除了那个,则不再有com.sun.jersey依赖关系。这不是新的,它是基于另一个与此配置一起工作的先前版本,因此我们的想法是不要在这些东西上花费太多时间。哈! –

+0

@monkeyintern'jersey-servlet'依赖项中包含'com.sun.jersey.spi.container.servlet.ServletContainer'类。你不应该有这个错误。 –

+0

我不知道还有什么可以做或者看什么。运行为:服务器应该在这种情况下工作,如果一切正常吗?不需要.war?我已经检查了所有可能的解决方案。 TCH。 –