Struts 2プロファイルのデフォルトパスを変更


sshは卒业する时に自覚して、このフレームワークに対してもともとよく知らないで、加えて仕事用のずっとplayフレームワークを出して、今日暇で慌ててsshのdemoを书いて、途中でいろいろな间违いに出会って、大部はjarバッグが不足してもたらしただけで、struts 2を整える时私はstruts.xmlファイルをデフォルトディレクトリsrcの下に置くと、その配置ディレクトリが変更され、WEB-INFxmlに配置されます.
tomcatを起動してもエラーはなく、構成されたactionにアクセスした結果、もちろん404であり、tomcatの印刷情報をよく見てみると、このような行の情報が見つかりました.
Unable to locate configuration files of the name struts.xml直訳するとstrutsという名前のプロファイルが見つかりませんでした.
strutsだと分かったxmlはロードされていません.strutsをxmlファイルはWEB-INFxmlの下に置かれています.tomcatのデフォルトの初期化パスはプロジェクトのsrcディレクトリです.もちろんstrutsのプロファイルは見つかりません.
私はorgを逆コンパイルします.apache.struts2.dispatcher.FilterDispatcherクラスはinitの方法があることを発見して、またネット上でいくつかの関連資料を探して見て、解決策を見つけて、webを見つけました.xmlファイルを次のように変更します.
	
		struts
		org.apache.struts2.dispatcher.FilterDispatcher
		
			config
			/WEB-INF/xml/struts.xml
		
	
はい、サーバーを再起動し、tomcatは直接エラーを報告します.
Caused by: com.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException:
 No mapping found for dependency [type=com.opensymphony.xwork2.ObjectFactory, name='default'] 
in public void com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.setObjectFactory(com.opensymphony.xwork2.ObjectFactory).
	at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMembers(ContainerImpl.java:144)
	at com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMethods(ContainerImpl.java:113)
	at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:90)
	at com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:86)
	at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:71)
	at com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:67)
	at com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:150)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:76)
	at com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:116)
	at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:490)
	at com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:530)
	at com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:528)
	at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:580)
	at com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:528)
	at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:233)
	at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
	at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390)
	at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:437)
	... 28 more
依存プロファイルcomが見つかりません.opensymphony.xwork2.ObjectFactory.
web.xmlにはstrutsのプロファイルのパスが示すが、struts-defaultのように依存する.xmlは初期化されていません.では、それを追加します.
	
		struts
		org.apache.struts2.dispatcher.FilterDispatcher
		
			config
			struts-default.xml,struts-plugin.xml,../xml/struts.xml
		
	
後の「../xml/struts.xml」に注意してください.strutsがロードされているので、なぜそう書きますか.xmlは、ロードしたアイテムにプロファイルを格納する絶対パス(web_inf/xml)ではなく、srcディレクトリのclassesディレクトリの下にあるので、相対パスを書きます.
以下はstrutsです.xmlファイル:
 

	
		  
		
		 
		
		
		


	 

login.xml
 



	
	
	
		
			/index.jsp
			/index.jsp
			
	
	

 

上の過程は自分でテストして合格して、この総括が同じ間違いに出会った初心者に役立つことを望んでいます!
転載先:https://www.cnblogs.com/kobe-dong/archive/2012/07/30/2743672.html