【问题标题】:Jersey com.sun.jersey.spi.container.servlet.ServletContainer error when using MAVENJersey com.sun.jersey.spi.container.servlet.ServletContainer 使用 MAVEN 时出错
【发布时间】:2016-05-15 20:49:03
【问题描述】:

当我尝试使用 Jersey 在 Eclipse 中构建一个简单的测试应用程序时。当我尝试运行我的应用程序时,我得到了这个异常:

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

我已经在 Stack Overflow 上研究了这个问题的答案并验证了这些事情:

确实,缺少的类不再存在于 jersey-server 中。该类现在存在于 jersey-servlet 中(注意“servlet”,而不是“server”)。所以我的 Maven 依赖项现在看起来像这样:

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

我的 web.xml 看起来像这样

<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.javacodegeeks.enterprise.rest.jersey</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>

我现在可以在 Eclipse 中查看我的项目,在 Java Resources/Libraries/Maven Dependencies 下我可以看到 jersey-servlet-1.19.jar 文件,在那个 jar 中我可以看到 com.sun.jersey.spi.container .servlet 包,在该包中我可以看到 ServletContainer.class 文件。

所以一切似乎都是正确的,但是当服务器 (apache 7.0) 启动时它找不到明显存在的类。

感谢您的任何建议。

【问题讨论】:

标签: eclipse maven exception jersey


【解决方案1】:

这是 eclipse 设置问题,而不是 Jersey 问题。

来自这个帖子ClassNotFoundException: com.sun.jersey.spi.container.servlet.ServletContainer

右键单击您的 Eclipse 项目属性 -> 部署程序集 -> 添加 -> Java 构建路径条目 -> Maven 依赖项 -> 完成。

所以 Eclipse 在启动 Apache 时没有使用 maven 依赖项。

【讨论】:

  • 对我来说它突然停止工作,所以我删除了 maven 依赖项并再次添加它来工作。
【解决方案2】:

我通过如下改变我的依赖解决了它。

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

这与 maven 库的结构相同。

【讨论】:

    【解决方案3】:

    Jersey 1 使用 com.sun.jersey,Jersey 2 使用 org.glassfish.jersey,因此例外。

    另请注意,以 com.sun.jersey 开头的 init-param 也不会被 Jersey 2 识别。

    【讨论】:

      猜你喜欢
      • 2016-12-10
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多