【发布时间】:2012-06-23 08:20:48
【问题描述】:
我现在觉得自己很愚蠢,但我整天都在挣扎,我一点头绪都没有,不胜感激:)
我开发了一个 struts2 webapp,当我通过 eclipse (indigo sr2) 运行它时,它运行良好,与我自己计算机上安装的 servelt 服务器 apache tomcat 7.0.27 相关。我所做的就是:右键单击我的 webapp 的文件夹 --> 运行方式 --> 在服务器上运行。然后,当我复制和路径我的 servlet 的 url 地址时,它可以在 eclipse 浏览器或其他浏览器(chrome、firefox)中很好地运行。
现在我想做的就是让它在没有 Eclipse 的情况下运行。所以我将我的 webapp 导出到一个 .war 文件中(右键单击 webapp 文件夹 --> 导出 --> War 文件),并尝试使用应用程序管理器 tomcat web 界面部署它:它要求我做的就是浏览通过我的计算机获取战争文件并单击部署按钮。轻松到此为止!
然后我的 webapp 出现在应用程序管理器界面的应用程序选项卡中,但是当我点击“运行”按钮时,我得到的只是这条消息:
失败:上下文路径/MMSProject 的应用程序无法启动
(原始消息是法语,我没有找到如何更改 tomcat7 语言,所以这可能不是您在英语中得到的确切消息,我希望这个翻译足够接近。MMSProject em> 是我的 webapp 的名称)。
因此,我在struts2网站上下载了一些struts2 webapp示例,并尝试使用相同的过程在tomcat7上部署struts2-blank。这个工作得很好:我可以从 tomcat 应用程序管理器中运行它。所以我想我的问题来自我自己的war文件而不是tomcat本身,但由于它是由eclipse生成的,所以这部分过程可能会出错对我来说似乎很奇怪。
所以我坚持这一点。你们知道吗:
- 如何获得有关问题的更多信息(我查看了 tomcat 日志,但没有找到任何错误消息)。这对我解决问题有很大帮助!
- 我的 webapp 会从 eclipse 运行但不直接从 tomcat 运行的任何原因?
- 如何让它从 tomcat 运行? :)
非常感谢您的任何帮助!我现在有点绝望,没想到部署会这么痛苦!
编辑: 我仔细检查了tomcat的日志,实际上在catalina.[date].log中找到了这个:
- 严重:错误过滤器启动 2012 年 6 月 21 日下午 1:48:42 org.apache.catalina.core.StandardContext startInternal
- 严重:上下文 [/MMSproject] 由于之前的错误而启动失败
- 2012 年 6 月 21 日下午 1:48:42 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
- Grave:Web 应用程序 [/MMSproject] 创建了一个 ThreadLocal,其键类型为 [com.opensymphony.xwork2.inject.ContainerImpl$10](值 [com.opensymphony.xwork2.inject.ContainerImpl$10@2de3bcb5])和一个[java.lang.Object[]] 类型的值(值 [[Ljava.lang.Object;@427a269c])但在 Web 应用程序停止时未能将其删除。线程将随着时间的推移而更新,以避免可能的内存泄漏。
- 2012 年 6 月 21 日下午 1:48:42 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
- Grave:Web 应用程序 [/MMSproject] 创建了一个 ThreadLocal,其键类型为 [com.opensymphony.xwork2.inject.ContainerImpl$10](值 [com.opensymphony.xwork2.inject.ContainerImpl$10@617ceddc])和一个[java.lang.Object[]] 类型的值(值 [[Ljava.lang.Object;@50e43884])但在 Web 应用程序停止时未能将其删除。线程将随着时间的推移而更新,以避免可能的内存泄漏。
这在 localhost.[date].localhost :
2012 年 6 月 21 日下午 1:48:42 org.apache.catalina.core.StandardContext filterStart 严重:异常启动过滤器 struts2 java.lang.NullPointerException 在 com.opensymphony.xwork2.util.FileManager$FileRevision.needsReloading(FileManager.java:209) 在 com.opensymphony.xwork2.util.FileManager.fileNeedsReloading(FileManager.java:60) 在 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:325) 在 org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:168) 在 com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:220) 在 com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:61) 在 org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:774) 在 org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:191) 在 org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277) 在 org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258) 在 org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382) 在 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:103) 在 org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4638) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5294) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1247) 在 org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:747) 在 org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:222) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(Unknown Source)
【问题讨论】:
-
没有基本错误,您应该简单地尝试 CLEAN 并重新构建。
标签: deployment struts2 tomcat7