我为maclipse使用maven插件,为maven使用tomcat插件。当我用它来“清理tomcat7:deploy”我的hello.war到localhost上的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服务器设置,我认为这里的问题不同。
该做什么以及在哪里看?
修改
当我在localhost上通过/ 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'
答案 0 :(得分:2)
我曾经使用JDK1.8环境编译项目。
现在我使用JDK1.7重新编译项目,我的Ubuntu服务器的Tomcat8开始识别实现WebApplicationInitializer接口的Bootstrap.class。
所以,答案就是:
在Tomcat / manager / html页面的底部检查tomcat的JVM版本。 使用适当的JDK版本重新编译项目。