【问题标题】:com.sun.jersey.spi.spring.container.servlet.SpringServlet cannot be cast to javax.servlet.Servletcom.sun.jersey.spi.spring.container.servlet.SpringServlet 无法转换为 javax.servlet.Servlet
【发布时间】:2015-03-17 05:21:32
【问题描述】:

我正在尝试在 JBOSS7.1.1 中部署 RESTful Web 服务,它给了我以下错误: 错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/anthut]] (MSC service thread 1-1) Servlet /anthut throw load() exception: java.lang. ClassCastException: com.sun.jersey.spi.spring.container.servlet.SpringServlet 无法转换为 javax.servlet.Servlet。

我在项目中使用的球衣版本是 1.18.3。

下面给出了我的 web.xml 的一部分

 <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
 <servlet>
<servlet-name>abdfserve</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>

请问这是什么原因造成的,我已经为此工作了几天了...我需要帮助...

【问题讨论】:

  • 类路径上是否有多个版本的 servlet API?您不应该有任何额外的 servlet-api.jar。 JBOSS 已经提供了。
  • 我应该把它从我的依赖中去掉吗?
  • 您需要它作为编译时依赖项,但不应部署它。如果您使用 Maven,它具有“提供”范围。
  • 是的,我使用 Maven,它提供了作用域。
  • 谢谢@Thilo,确实我在 JBOSS 模块设置中复制了 servlet API;我在我的项目中使用的两个模块中创建了它的依赖关系,当我从一个模块中删除它时,问题得到了解决。

标签: rest servlets jboss7.x


【解决方案1】:

当您的类路径中有多个版本的 servlet API 时,可能会发生这种情况。

servlet API 始终由 Web 应用程序服务器提供,您不得将其包含在您自己的 Web 应用程序包中。

在开发过程中您需要它作为编译时依赖项,但不应部署它。如果您使用 Maven,请确保它具有“提供”范围。

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    相关资源
    最近更新 更多