问题
Tomcat7在启动时报错,详细信息如下:
十一月 23, 2013 7:21:58 下午 org.apache.catalina.core.StandardContext startInter
nal严重: Error filterStart十一月 23, 2013 7:21:58 下午 org.apache.catalina.core.StandardContext startInternal严重: Context [/st] startup failed due to previous errors分析
Tomcat后台信息太少以至于不能得出问题空间出在哪儿(Tomcat的日志目录也无相关信息)。网上查询得知,通过配置Tomcat的Log,让它记录更多的日志信息,方能进一步分析原因。
在不能启动的Web应用目录(我这里是st)下WEB-INF/classes目录中,新建logging.properties文件,内容参考如下:
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler############################################################# Handler specific properties.# Describes specific configuration info for Handlers.############################################################org.apache.juli.FileHandler.level = FINEorg.apache.juli.FileHandler.directory = ${catalina.base}/logsorg.apache.juli.FileHandler.prefix = error-debug.java.util.logging.ConsoleHandler.level = FINEjava.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
严重: Exception starting filter struts2Unable to load configuration. - action - file:/D:/Work/helloworld/WebContent/WEB-INF/classes/struts.xml:8:67 at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:483) at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:103) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744)Caused by: Unable to load configuration. - action - file:/D:/Work/helloworld/WebContent/WEB-INF/classes/struts.xml:8:67 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:429) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:471) ... 15 moreCaused by: Action class [com.clzhang.ssh.action.LoginAction] not found - action- file:/D:/Work/helloworld/WebContent/WEB-INF/classes/struts.xml:8:67 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:480) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:424) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:541) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:290) at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:112) at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:239) at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) ... 17 more十一月 23, 2013 7:27:44 下午 org.apache.catalina.core.StandardContext startInternal严重: Error filterStart十一月 23, 2013 7:27:44 下午 org.apache.catalina.core.StandardContext startInternal严重: Context [/st] startup failed due to previous errors十一月 23, 2013 7:27:44 下午 org.apache.catalina.startup.HostConfig deployDirectory
解决
是程序的问题,配置的相关Action类的包名更改了,但没有及时更改struts.xml文件导致上述结果。
有关Tomcat的日志相关配置参考:
本文参考:
可能有同学打不开上述页面,因为它被屏蔽了。摘录部分内容如下,供参考:
Just for future reference; even though the app worked fine in development mode, there were some bugs in the BootStrap when deploying to a real server. I realized errors in the BootStrap were creating the cryptic listererStart error.
In order to get better debug logging, place a file called "logging.properties" in the webapps WEB-INF/classes folder. Then, your server logs will show descriptive errors for debugging:
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################org.apache.juli.FileHandler.level = FINE org.apache.juli.FileHandler.directory = ${catalina.base}/logs org.apache.juli.FileHandler.prefix = servlet-examples.
java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
This will create a servlet-examples.log file in your appserver's log folder. This data was found at under the "Using java.util.logging (default)" header.
Hopefully this will help save someone some time and frustration when deploying their app, especially if, like me, they are unfamiliar with tomcat and the logging facilities.