問題
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 startInter
nal
嚴重: 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 = FINE org.apache.juli.FileHandler.directory = ${catalina.base}/logs org.apache.juli.FileHandler.prefix = error-debug. java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
再啟動Tomcat后,后台顯示出了錯誤原因,並且Tomcat的日志目錄中也出現了文件“error-debug.2013-11-23.log”,其中記錄了錯誤詳細信息。下面內容供參考(每個人出錯的原因不一樣,需要具體問題具體分析解決):
嚴重: Exception starting filter struts2 Unable 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(InitOp erations.java:74) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter .init(StrutsPrepareAndExecuteFilter.java:51) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(Applicati onFilterConfig.java:277) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(Applicatio nFilterConfig.java:258) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(Applica tionFilterConfig.java:382) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFi lterConfig.java:103) at org.apache.catalina.core.StandardContext.filterStart(StandardContext. java:4650) at org.apache.catalina.core.StandardContext.startInternal(StandardContex t.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/Web Content/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(Di spatcher.java:429) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:471) ... 15 more Caused 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.ver ifyAction(XmlConfigurationProvider.java:480) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.add Action(XmlConfigurationProvider.java:424) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.add Package(XmlConfigurationProvider.java:541) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loa dPackages(XmlConfigurationProvider.java:290) at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages (StrutsXmlConfigurationProvider.java:112) at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContai ner(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 startInter nal 嚴重: Error filterStart 十一月 23, 2013 7:27:44 下午 org.apache.catalina.core.StandardContext startInter nal 嚴重: Context [/st] startup failed due to previous errors 十一月 23, 2013 7:27:44 下午 org.apache.catalina.startup.HostConfig deployDirect ory
解決
是程序的問題,配置的相關Action類的包名更改了,但沒有及時更改struts.xml文件導致上述結果。
有關Tomcat的日志相關配置參考:http://tomcat.apache.org/tomcat-7.0-doc/logging.html
本文參考:
http://grails.1312388.n4.nabble.com/Deployment-problems-td4628710.html
可能有同學打不開上述頁面,因為它被屏蔽了。摘錄部分內容如下,供參考:
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 http://tomcat.apache.org/tomcat-7.0-doc/logging.html 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.