【问题标题】:Tomcat 8 - No Spring WebApplicationInitializer types detected on classpathTomcat 8 - 在类路径上未检测到 Spring WebApplicationInitializer 类型
【发布时间】:2016-06-19 20:59:15
【问题描述】:

我为 Eclipse 使用 maven 插件,为 maven 使用 tomcat 插件。当我使用它“清理 tomcat7:deploy”我的 hello.war 到本地主机上的 Tomcat 8 服务器时,它工作正常。我可以去 localhost:8080/hello/hello 看到“你好!”页。

但是当我部署到本地网络中的 Ubuntu 服务器 15.10 并转到 192.168.1.2:8080/hello/hello 时,我收到 Apache Tomcat 404 错误。虽然 tomcat 管理器显示部署很顺利并且我的应用程序正在运行。

我的想法是 ubuntu 上的 tomcat 服务器有问题,但是当我将其他应用程序部署到 ubuntu 上的同一 tomcat 服务器时,它们可以正常工作。然后我认为问题出在我的“你好”应用程序中。但如果是这样,我将无法在我的 localhost tomcat 服务器上成功运行它!

当我在 Ubuntu 服务器上阅读 Tomcat 上的日志时,他们会说:

06-Mar-2016 10:00:00.369 INFO [http-nio-8080-exec-5] org.apache.catalina.core.ApplicationContext.log Manager: deploy: Deploying web application '/hello'
06-Mar-2016 10:00:00.370 INFO [http-nio-8080-exec-5] org.apache.catalina.core.ApplicationContext.log Manager: Uploading WAR file to /var/lib/tomcat8/webapps/hello.war.tmp
06-Mar-2016 10:00:18.022 INFO [localhost-startStop-3] org.apache.catalina.core.ApplicationContext.log No Spring WebApplicationInitializer types detected on classpath

所以它似乎找不到实现 Spring WebApplicationInitializer 接口的我的 Bootstrap.class 类。虽然当我检查文件夹 /var/lib/tomcat8/webapps/hello/WEB-INF/classes 它包含它应该包含的所有类。

我检查了 localhost 上的日志,他们没有抱怨这一点。

所以最后似乎Ubuntu服务器上的Tomcat 8找不到提到的WebApplicationInitializer。 我已经在 stackoverflow 上阅读了类似问题的答案并尝试过,但其中大多数都在处理 eclipse 服务器设置,我认为我的问题有所不同。

做什么和去哪里看?

编辑:

当我通过本地主机上的 /manager 手动部署 hello.war 时,一切正常。在 localhost.2016-03-06.log 我有:

06-Mar-2016 11:34:33.081 INFO [http-nio-8080-exec-51] org.apache.catalina.core.ApplicationContext.log Spring WebApplicationInitializers detected on classpath: [by.hello.configuration.Bootstrap@19087f1e]
06-Mar-2016 11:34:33.544 INFO [http-nio-8080-exec-51] org.apache.catalina.core.ApplicationContext.log Initializing Spring root WebApplicationContext
06-Mar-2016 11:34:34.026 INFO [http-nio-8080-exec-51] org.apache.catalina.core.ApplicationContext.log Initializing Spring FrameworkServlet 'springDispatcher'

我可以去 localhost:8080/hello/hello 看到“你好!”问候。

当我在日志中对 Ubuntu 服务器的 tomcat /manager 执行相同操作时,我有:

06-Mar-2016 11:36:06.555 INFO [http-nio-8080-exec-14] org.apache.catalina.core.ApplicationContext.log No Spring WebApplicationInitializer types detected on classpath
06-Mar-2016 11:36:06.559 INFO [http-nio-8080-exec-14] org.apache.catalina.core.ApplicationContext.log HTMLManager: list: Listing contexts for virtual host 'localhost'

【问题讨论】:

  • 我会先比较苹果和苹果。在 localhost 上部署 war 文件时会发生什么,就像在 ubuntu 服务器上部署它一样(即不使用 mvn tomcat7:deploy)
  • 我编辑了问题并添加了来自 localhost 端和 ubuntu 服务器端的日志。

标签: spring-mvc tomcat


【解决方案1】:

我以前用JDK1.8环境编译项目。

现在我使用JDK1.7重新编译项目,我的Ubuntu服务器的Tomcat8开始识别实现WebApplicationInitializer接口的Bootstrap.class。

所以,我的答案是:

在 Tomcat /manager/html 页面底部检查您的 Tomcat 的 JVM 版本。 使用适当的 JDK 版本重新编译您的项目。

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 2013-04-25
    • 2014-05-21
    • 2018-11-30
    • 2014-08-28
    • 2019-09-06
    • 2017-06-02
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多