Unable to load configuration. - action - file:/C:/apache-tomcat-7.0.70/webapps/Structs/WEB-INF/classes/struts.xml:7:72
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:431)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5633)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1260)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:2002)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
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:745)
Caused by: Unable to load configuration. - action - file:/C:/apache-tomcat-7.0.70/webapps/Structs/WEB-INF/classes/struts.xml:7:72
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)
... 18 more
Caused by: Action class [cn.liuyang.action.HelloWorldAction] not found - action - file:/C:/apache-tomcat-7.0.70/webapps/Structs/WEB-INF/classes/struts.xml:7:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:409)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:354)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:468)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:264)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:193)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
... 20 more
這是struts錯誤中很經典的一個錯誤,今天筆者也煩了這個錯誤,這個錯誤主要的原因是配置的人沒有認真地配置環境,導致服務器無法識別而產生的錯誤,錯誤產生的原因有三點:
一、缺少類包
找到所需的jar包:發行包的lib目錄中(不同版本需要的最小jar包是不同的,參見不同版本的文檔。2.1.7)(至少這七個)
struts2-core.jar 核心jar包
xwork-2.jar xwork核心jar包
ognl.jar ognl表達式
freemarker.jar FreeMarker模板
commons-logging.jar 日志
commons-fileupload.jar 文件上傳
commons-io.jar 文件上傳依賴的包
檢查包是否缺少,如果包沒有缺少,那么查看第二步
二、審核struts.xml是否與所配置的類和類的包名相符
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="www" namespace="/test" extends="struts-default">
<action name="helloworld" class="com.www.action.HelloWorldAction" method="sayHello">
<result name="success">/1.jsp</result>
</action>
</package>
</struts>
其中,這個錯誤出現的原因我的是 class="com.www.action.HelloWorldAction" 這個與包的名字沒有一樣
跟src下邊的包名不一致,所以就會報上邊的錯誤,所以把這個改了,就是正確的了
三、沒有在web.xml的文件下配置核心控制器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
將這個配置進你的web.xml當中,<filter-name>struts2</filter-name>這個中間必須是struts2,如果寫錯,也會報錯。
四、改完后要刪除部署的記錄,否則還是報錯
在myeclipse下有一個D:\Users\MyEclipse 10\.metadata\.plugins\org.eclipse.core.runtime\.settings
這個路徑下有一個,com.genuitec.eclipse.ast.deploy.core.prefs,還有在Tomcat的
C:\apache-tomcat-7.0.70\webapps這個路徑下有
Structs.myeclipse.bak和Structs這兩個文件夾,把這幾個都刪除了,然后關閉myeclipse,然后重啟myeclipse,然后重新部署,重啟啟動服務器,再訪問: http://localhost:8080/Structs/test/helloworld 就會配置成功
細心是程序員的基本素養,粗心的人是沒法成為一個優秀的程序員的,希望對您有幫助,有疑問請留言。