【问题标题】:wildfly 10 - javax.servlet.ServletContainerInitializer: Provider org.springframework.web.SpringServletContainerInitializer not a subtypewildfly 10 - javax.servlet.ServletContainerInitializer:提供者 org.springframework.web.SpringServletContainerInitializer 不是子类型
【发布时间】:2017-03-11 17:29:39
【问题描述】:

我正在使用 Spring 4.3 和 Servlet 3.1。 部署失败并出现错误 javax.servlet.ServletContainerInitializer:提供者 org.springframework.web.SpringServletContainerInitializer 不是子类型。 我知道这是一些错误的类正在加载

Spring jars 和 Servlet 3.1 jars 被配置为一个模块并在 module.xml 中提及。

javax.servlet.ServletContainerInitializer 仅存在于我已包含在 module.xml 中的一个 jar jboss-servlet-api_3.1_spec-1.0.0.Final.jar 中。

我的应用程序需要 SpringServletContainerInitializer。 如果您需要我发布更多详细信息,请告诉我。 任何帮助表示赞赏。

【问题讨论】:

  • 您是否包括服务器库,即在您的部署中包含javax.servlet.ServletContainerIntitializer 的库?
  • 我想我解决了这个问题。早些时候,我在自定义模块中添加了 jboss-servlet-api_3.1_spec-1.0.0.Final.jar。我删除了它并在 module.xml 中添加了一个条目以包含如下的依赖项 />
  • 我在使用 wildfly 8 时也面临同样的问题。我还想为我的应用程序使用 SpringServletContainerInitializer。您能否提供更多详细信息,说明您究竟做了哪些更改以及在哪个文件上进行了更改。提前致谢。

标签: java spring servlets wildfly


【解决方案1】:

我遇到了同样的问题,并通过 goig 通过我的依赖项解决了它,以查看我的应用程序服务器库是否有任何崩溃。

确保您的 java-eejava-ee-web 依赖项在您的 maven/gradle 配置中设置为“已提供”范围。

【讨论】:

    【解决方案2】:

    我遇到了同样的错误,经过研究,我发现 SpringServletContainerInitializer 由于 Maven 打包问题而无法加载。就我而言,spring-web-4.3.8.Release.jar 没有与应用程序 WAR 正确捆绑。

    这个可以解决

    1. 解决应用程序捆绑冲突
    2. 使用服务器共享库
    3. 如果使用 IDE 进行应用程序捆绑,可以避免使用 IDE 进行捆绑或切换 IDE(如 STS 到 Eclipse/RAD)

    【讨论】:

      【解决方案3】:

      另一个额外的 servlet-api 和其他类似 Java EE API 副本的潜在来源是 Spring Boot 的 tomcat-embed-core-.jar,您可以从 spring-boot-starter-web 获得它。

      【讨论】:

        猜你喜欢
        • 2016-07-07
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 2019-09-14
        • 1970-01-01
        • 2017-03-09
        • 2014-03-09
        相关资源
        最近更新 更多