我设法缩小了为什么我无法编译我的项目。这是一个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>
如果我这样做,我得到:java.lang.ClassNotFoundException:com.sun.jersey.spi.container.servlet.ServletContainer。除了jersey-json之外,如果我删除了那个,则不再有com.sun.jersey依赖关系。这不是新的,它是基于另一个与此配置一起工作的先前版本,因此我们的想法是不要在这些东西上花费太多时间。哈! –
@monkeyintern'jersey-servlet'依赖项中包含'com.sun.jersey.spi.container.servlet.ServletContainer'类。你不应该有这个错误。 –
我不知道还有什么可以做或者看什么。运行为:服务器应该在这种情况下工作,如果一切正常吗?不需要.war?我已经检查了所有可能的解决方案。 TCH。 –