I did as you said and did not get any exception! Could you please add following line to catalina.bat:
set "JAVA_OPTS=-XX:+TraceClassLoading -XX:+TraceClassUnloading" then: catalina.bat run > my_tomcat.log 2>&1 then finally search my_tomcat.log for MethodUtils? I would like to see from where your tomcat load MethodUtils class! On 9/2/2017 7:06 PM, albert kao wrote: > My hello-world.war has the commons lang3 3.6: > hello-world/WEB-INF/lib > hello-world/WEB-INF/lib/commons-fileupload-1.3.3.jar > hello-world/WEB-INF/lib/ognl-3.1.12.jar > hello-world/WEB-INF/lib/struts2-core-2.5.12.jar > hello-world/WEB-INF/lib/freemarker-2.3.23.jar > hello-world/WEB-INF/lib/log4j-core-2.8.2.jar > hello-world/WEB-INF/lib/log4j-api-2.8.2.jar > hello-world/WEB-INF/lib/commons-io-2.4.jar > hello-world/WEB-INF/lib/javassist-3.20.0-GA.jar > hello-world/WEB-INF/lib/commons-lang3-3.6.jar > > However, the helloworld link in index.jsp did not see it. > > > On Sat, Aug 26, 2017 at 7:43 PM, Yasser Zamani <yasser.zam...@live.com> > wrote: > >> I checked it's codes and seems ok. It has a dependency to struts 2.5.12 >> which has (not optional) dependency to commons lang3 3.6. So you should >> have commons lang3 3.6 in your war lib. Do you? Or maybe you have lower >> version of commons lang3 jar in your tomcat lib? Please check both. >> >> albert kao <albertk...@gmail.com> نوشت: >> >>> I downloaded struts-examples-master.zip from >>> https://github.com/apache/struts-examples. >>> Unzip it and run mvn. >>> >>> # mvn -version >>> Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; >>> 2015-11-10T11:41:47-05:00) >>> Maven home: /home/alkao/maven/apache-maven-3.3.9 >>> Java version: 1.8.0_131, vendor: Oracle Corporation >>> Java home: /home/alkao/jdk/jdk1.8.0_131/jre >>> Default locale: en_CA, platform encoding: UTF-8 >>> OS name: "linux", version: "4.4.0-21-generic", arch: "i386", family: >> "unix" >>> >>> >>> $ mvn -e clean package >>> [INFO] Error stacktraces are turned on. >>> [INFO] Scanning for projects... >>> [WARNING] >>> [WARNING] Some problems were encountered while building the effective >> model >>> for org.apache.struts:annotations:war:1.0.0 >>> [WARNING] The expression ${artifactId} is deprecated. Please use >>> ${project.artifactId} instead. >>> [WARNING] >>> ... >>> [WARNING] >>> [WARNING] It is highly recommended to fix these problems because they >>> threaten the stability of your build. >>> [WARNING] >>> [WARNING] For this reason, future Maven versions might no longer support >>> building such malformed projects. >>> [WARNING] >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] Reactor Build Order: >>> [INFO] >>> ... >>> [INFO] Building Action chaining 1.0-SNAPSHOT >>> [INFO] >>> ------------------------------------------------------------------------ >>> Downloading: >>> https://repo.maven.apache.org/maven2/org/apache/maven/ >> plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.pom >>> Downloaded: >>> https://repo.maven.apache.org/maven2/org/apache/maven/ >> plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.pom >>> (12 KB at 21.7 KB/sec) >>> Downloading: >>> https://repo.maven.apache.org/maven2/org/apache/maven/ >> plugins/maven-plugins/27/maven-plugins-27.pom >>> Downloaded: >>> https://repo.maven.apache.org/maven2/org/apache/maven/ >> plugins/maven-plugins/27/maven-plugins-27.pom >>> (0 B at 0.0 KB/sec) >>> Downloading: >>> https://repo.maven.apache.org/maven2/org/apache/maven/ >> maven-parent/26/maven-parent-26.pom >>> Downloaded: >>> https://repo.maven.apache.org/maven2/org/apache/maven/ >> maven-parent/26/maven-parent-26.pom >>> (0 B at 0.0 KB/sec) >>> Downloading: >>> https://repo.maven.apache.org/maven2/org/apache/maven/ >> plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.jar >>> Downloaded: >>> https://repo.maven.apache.org/maven2/org/apache/maven/ >> plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.jar >>> (46 KB at 415.4 KB/sec) >>> Downloading: >>> https://repository.apache.org/content/groups/public/org/ >> apache/struts/struts2-core/2.5.12/struts2-core-2.5.12.pom >>> Downloaded: >>> https://repository.apache.org/content/groups/public/org/ >> apache/struts/struts2-core/2.5.12/struts2-core-2.5.12.pom >>> (17 KB at 30.1 KB/sec) >>> ... >>> [INFO] >>> ------------------------------------------------------------------------ >>> [INFO] BUILD SUCCESS >>> ... >>> >>> >>> >>> Copy hello-world.war to Apache TomEE: >>> # cp helloworld/target/hello-world.war $CATALINA_HOME/webapps/. >>> >>> >>> In a browser accessing URL: >>> http://localhost:8080/hello-world/index.jsp >>> >>> >>> which display: >>> "Welcome To Struts 2! >>> >>> Hello World" >>> >>> >>> >>> Then clicking the 'Hello World' link got the url: >>> http://localhost:8080/hello-world/hello.action;jsessionid= >> 8EEA47306A76BAE87F665C6090D518E3 >>> >>> >>> which display: >>> HTTP Status 500 - Filter execution threw an exception >>> >>> type Exception report >>> >>> message Filter execution threw an exception >>> >>> description The server encountered an internal error that prevented it >> from >>> fulfilling this request. >>> >>> exception >>> >>> javax.servlet.ServletException: Filter execution threw an exception >>> root cause >>> >>> java.lang.NoSuchMethodError: >>> org.apache.commons.lang3.reflect.MethodUtils.getAnnotation(Ljava/lang/ >> reflect/Method;Ljava/lang/Class;ZZ)Ljava/lang/annotation/Annotation; >>> org.apache.struts2.interceptor.validation.AnnotationValidationIntercepto >> r.doIntercept(AnnotationValidationInterceptor.java:47) >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( >> MethodFilterInterceptor.java:98) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor. >> doIntercept(ConversionErrorInterceptor.java:139) >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( >> MethodFilterInterceptor.java:98) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept( >> ParametersInterceptor.java:134) >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( >> MethodFilterInterceptor.java:98) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept( >> ParametersInterceptor.java:134) >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( >> MethodFilterInterceptor.java:98) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor. >> intercept(StaticParametersInterceptor.java:199) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> org.apache.struts2.interceptor.MultiselectInterceptor.intercept( >> MultiselectInterceptor.java:69) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept( >> DateTextFieldInterceptor.java:115) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> org.apache.struts2.interceptor.CheckboxInterceptor.intercept( >> CheckboxInterceptor.java:88) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> org.apache.struts2.interceptor.FileUploadInterceptor.intercept( >> FileUploadInterceptor.java:246) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept( >> ModelDrivenInterceptor.java:99) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor. >> intercept(ScopedModelDrivenInterceptor.java:139) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept( >> ChainingInterceptor.java:157) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept( >> PrepareInterceptor.java:174) >>> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept( >> MethodFilterInterceptor.java:98) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor. >> java:123) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> org.apache.struts2.interceptor.ServletConfigInterceptor.intercept( >> ServletConfigInterceptor.java:171) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.AliasInterceptor. >> intercept(AliasInterceptor.java:201) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor. >> intercept(ExceptionMappingInterceptor.java:193) >>> com.opensymphony.xwork2.DefaultActionInvocation.invoke( >> DefaultActionInvocation.java:247) >>> org.apache.struts2.factory.StrutsActionProxy.execute( >> StrutsActionProxy.java:53) >>> org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java: >> 577) >>> org.apache.struts2.dispatcher.ExecuteOperations.executeAction( >> ExecuteOperations.java:81) >>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter. >> doFilter(StrutsPrepareAndExecuteFilter.java:143) >>> note The full stack trace of the root cause is available in the Apache >>> Tomcat (TomEE)/8.5.11 (7.0.3) logs. >>> >>> Apache Tomcat (TomEE)/8.5.11 (7.0.3) >> >