2016-08-04 52 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。 –