2017-06-06 63 views
-1

我剛剛開始使用這個Struts 2 HelloWorld教程[1],並嚴格按照本教程中介紹的步驟操作,但啓動過濾器時出現問題。這裏是控制檯輸出:Struts 2 - 異常開始過濾器struts2

[1] https://www.tutorialspoint.com/struts_2/struts_examples.htm

Jun 06, 2017 4:53:35 PM org.apache.catalina.core.AprLifecycleListener init 
INFORMATION: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0_112\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_131/bin/server;C:/Program Files/Java/jre1.8.0_131/bin;C:/Program Files/Java/jre1.8.0_131/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Enterprise Vault\EVClient\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files\eclipse;;. 
Jun 06, 2017 4:53:35 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNUNG: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:HelloWorldStruts2' did not find a matching property. 
Jun 06, 2017 4:53:36 PM org.apache.coyote.AbstractProtocol init 
INFORMATION: Initializing ProtocolHandler ["http-bio-18080"] 
Jun 06, 2017 4:53:36 PM org.apache.catalina.startup.Catalina load 
INFORMATION: Initialization processed in 428 ms 
Jun 06, 2017 4:53:36 PM org.apache.catalina.core.StandardService startInternal 
INFORMATION: Starting service Catalina 
Jun 06, 2017 4:53:36 PM org.apache.catalina.core.StandardEngine startInternal 
INFORMATION: Starting Servlet Engine: Apache Tomcat/7.0.52 
Jun 06, 2017 4:53:39 PM org.apache.catalina.startup.TaglibUriRule body 
INFORMATION: TLD skipped. URI: /struts-tags is already defined 
Jun 06, 2017 4:53:39 PM org.apache.catalina.core.ApplicationContext log 
INFORMATION: No Spring WebApplicationInitializer types detected on classpath 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console... 
Jun 06, 2017 4:53:39 PM org.apache.catalina.core.StandardContext filterStart 
SCHWERWIEGEND: Exception starting filter struts2 
java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector 
File: ContainerImpl.java 
Method: construct 
Line: 427 - com/opensymphony/xwork2/inject/ContainerImpl.java:427:-1 
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:450) 
    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: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:4809) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5485) 
    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:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:427) 
    at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:218) 
    at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:52) 
    at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:91) 
    at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:571) 
    at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:568) 
    at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:560) 
    at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:568) 
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:278) 
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:160) 
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) 
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390) 
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:437) 
    ... 14 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:410) 
    ... 26 more 
Caused by: java.lang.NoSuchMethodError: org.apache.commons.lang3.text.StrSubstitutor.setValueDelimiter(Ljava/lang/String;)Lorg/apache/commons/lang3/text/StrSubstitutor; 
    at com.opensymphony.xwork2.config.providers.EnvsValueSubstitutor.<init>(EnvsValueSubstitutor.java:32) 
    ... 31 more 

Jun 06, 2017 4:53:39 PM org.apache.catalina.core.StandardContext startInternal 
SCHWERWIEGEND: Error filterStart 
Jun 06, 2017 4:53:39 PM org.apache.catalina.core.StandardContext startInternal 
SCHWERWIEGEND: Context [/HelloWorldStruts2] startup failed due to previous errors 
Jun 06, 2017 4:53:39 PM org.apache.coyote.AbstractProtocol start 
INFORMATION: Starting ProtocolHandler ["http-bio-18080"] 
Jun 06, 2017 4:53:39 PM org.apache.catalina.startup.Catalina start 
INFORMATION: Server startup in 3183 ms 

我覺得沒有必要在這裏貼上我的代碼,因爲它是完全按照上面的教程鏈接規定的代碼。除了我取代

<filter-class> 
    org.apache.struts2.dispatcher.FilterDispatcher 
    </filter-class> 

<filter-class> 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
    </filter-class> 

因爲提出這個答案,這並不能解決問題:java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher 我用struts 2.3.4,但用struts 2.2和2.5試了一下還 - 都不起作用。

+0

'產生的原因:java.lang.NoSuchMethodError:org.apache.commons.lang3.text.StrSubstitutor.setValueDelimiter(Ljava /朗/字符串;)Lorg /阿帕奇/公/ lang3 /文本/ StrSubstitutor;' - 添加相關的罐子。 –

+0

commons-lang3-3.1.jar位於lib中,就像教程中所述。 – freshCroissant

+0

他們不使用Struts 2.5。 –

回答

0

我發現了這個缺陷:我已經在「部署程序集」中留下了2.5個支柱,因爲有些其他帖子提出了這個問題,當它顯示了一些其他異常。我刪除他們和booom ..現在它的工作。 謝謝,亞歷山大!

相關問題