Please create a GitHub repo with your code and I'll take a look. Note that the examples from the book were tested only on Tomcat, and a pretty long time ago. I'll need any server details you're using.
Also note that S2 is fairly different now than when the book was written. On Sun, Nov 12, 2017 at 8:26 AM albert kao <albertk...@gmail.com> wrote: > struts2 version: 2.1.6 > > On Sat, Nov 11, 2017 at 9:47 PM, Dave Newton <davelnew...@gmail.com> > wrote: > > > What version of Struts 2 are you attempting to use? > > > > On Sat, Nov 11, 2017 at 5:58 PM albert kao <albertk...@gmail.com> wrote: > > > > > I downloaded the source code of the book "Apache Struts 2 Web > Application > > > Development" by Dave Newton from the > > > https://www.packtpub.com/books/content/support. > > > > > > Chapter 2 had compile error with Apache Maven 3.5.0. > > > $ mvn -version > > > Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; > > > 2017-04-03T15:39:06-04:00) > > > Maven home: /home/alkao/maven/apache-maven-3.5.0 > > > Java version: 1.8.0_144, vendor: Oracle Corporation > > > Java home: /home/alkao/jdk/jdk1.8.0_144/jre > > > Default locale: en_CA, platform encoding: UTF-8 > > > OS name: "linux", version: "4.4.0-21-generic", arch: "i386", family: > > "unix" > > > > > > To fix it, I removed just the <scope> tag in pom.xml. > > > Then run mvn: > > > $ cd > > > /home/alkao/Struts2/Apache_Struts_2_Web_Application_ > > Development/ch02/sanity > > > $ mvn clean package > > > > > > Running wildfly-10.1.0.Final: > > > $ JBOSS_HOME/bin/standalone.sh > > > $ jboss-cli.sh --connect --command="deploy > > > > > > /home/alkao/Struts2/Apache_Struts_2_Web_Application_ > > Development/ch02/sanity/target/ch02-sanity-1.0.war > > > --force" > > > > > > Running these 3 http links resulted in the same error in the web > browser > > > below. > > > Please help. Thanks. > > > http://localhost:8080/ch02-sanity-1.0/index.html > > > http://localhost:8080/ch02-sanity-1.0/sanity.jsp > > > http://localhost:8080/ch02-sanity-1.0/sanity.action > > > > > > > > > > > > > > > Error processing request > > > Context Path: > > > /ch02-convention-1.0 > > > > > > Servlet Path: > > > /index.html > > > > > > Path Info: > > > null > > > > > > Query String: > > > null > > > > > > Stack Trace > > > java.lang.NullPointerException > > > > > > com.opensymphony.xwork2.util.FileManager$FileRevision. > > needsReloading(FileManager.java:209) > > > > > > com.opensymphony.xwork2.util.FileManager.fileNeedsReloading( > > FileManager.java:60) > > > > > > com.opensymphony.xwork2.config.providers.XmlConfigurationProvider. > > needsReload(XmlConfigurationProvider.java:325) > > > > > > org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload( > > StrutsXmlConfigurationProvider.java:168) > > > > > > com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload( > > ConfigurationManager.java:220) > > > > > > com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration( > > ConfigurationManager.java:61) > > > org.apache.struts2.dispatcher.Dispatcher.getContainer( > > Dispatcher.java:774) > > > > > > > org.apache.struts2.dispatcher.ng.InitOperations.initStaticContentLoader( > > InitOperations.java:77) > > > > > > org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter. > > init(StrutsPrepareAndExecuteFilter.java:49) > > > > > > io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed( > > LifecyleInterceptorInvocation.java:111) > > > > > > org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init( > > RunAsLifecycleInterceptor.java:84) > > > > > > io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed( > > LifecyleInterceptorInvocation.java:97) > > > io.undertow.servlet.core.ManagedFilter.createFilter( > > ManagedFilter.java:80) > > > io.undertow.servlet.core.ManagedFilter.getFilter(ManagedFilter.java:66) > > > io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) > > > > > > io.undertow.servlet.handlers.FilterHandler$FilterChainImpl. > > doFilter(FilterHandler.java:131) > > > > > > io.undertow.servlet.handlers.FilterHandler.handleRequest( > > FilterHandler.java:84) > > > > > > io.undertow.servlet.handlers.security.ServletSecurityRoleHandler. > > handleRequest(ServletSecurityRoleHandler.java:62) > > > > > > io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest( > > ServletDispatchingHandler.java:36) > > > > > > org.wildfly.extension.undertow.security.SecurityContextAssociationHand > > ler.handleRequest(SecurityContextAssociationHandler.java:78) > > > > > > io.undertow.server.handlers.PredicateHandler.handleRequest( > > PredicateHandler.java:43) > > > > > > io.undertow.servlet.handlers.security.SSLInformationAssociationHandl > > er.handleRequest(SSLInformationAssociationHandler.java:131) > > > > > > io.undertow.servlet.handlers.security.ServletAuthenticationCallHandl > > er.handleRequest(ServletAuthenticationCallHandler.java:57) > > > > > > io.undertow.server.handlers.PredicateHandler.handleRequest( > > PredicateHandler.java:43) > > > > > > io.undertow.security.handlers.AbstractConfidentialityHandler > > .handleRequest(AbstractConfidentialityHandler.java:46) > > > > > > io.undertow.servlet.handlers.security.ServletConfidentialityConstrai > > ntHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) > > > > > > io.undertow.security.handlers.AuthenticationMechanismsHandle > > r.handleRequest(AuthenticationMechanismsHandler.java:60) > > > > > > io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHand > > ler.handleRequest(CachedAuthenticatedSessionHandler.java:77) > > > > > > > io.undertow.security.handlers.NotificationReceiverHandler.handleRequest( > > NotificationReceiverHandler.java:50) > > > > > > io.undertow.security.handlers.AbstractSecurityContextAssocia > > tionHandler.handleRequest(AbstractSecurityContextAssocia > > tionHandler.java:43) > > > > > > io.undertow.server.handlers.PredicateHandler.handleRequest( > > PredicateHandler.java:43) > > > > > > org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler. > > handleRequest(JACCContextIdHandler.java:61) > > > > > > io.undertow.server.handlers.PredicateHandler.handleRequest( > > PredicateHandler.java:43) > > > > > > io.undertow.server.handlers.PredicateHandler.handleRequest( > > PredicateHandler.java:43) > > > > > > io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest( > > ServletInitialHandler.java:292) > > > > > > io.undertow.servlet.handlers.ServletInitialHandler.access$ > > 100(ServletInitialHandler.java:81) > > > > > > io.undertow.servlet.handlers.ServletInitialHandler$2.call( > > ServletInitialHandler.java:138) > > > > > > io.undertow.servlet.handlers.ServletInitialHandler$2.call( > > ServletInitialHandler.java:135) > > > > > > io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call( > > ServletRequestContextThreadSetupAction.java:48) > > > > > > io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call( > > ContextClassLoaderSetupAction.java:43) > > > > > > io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call( > > LegacyThreadSetupActionWrapper.java:44) > > > > > > io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call( > > LegacyThreadSetupActionWrapper.java:44) > > > > > > io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call( > > LegacyThreadSetupActionWrapper.java:44) > > > > > > io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call( > > LegacyThreadSetupActionWrapper.java:44) > > > > > > io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call( > > LegacyThreadSetupActionWrapper.java:44) > > > > > > io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest( > > ServletInitialHandler.java:272) > > > > > > io.undertow.servlet.handlers.ServletInitialHandler.access$ > > 000(ServletInitialHandler.java:81) > > > > > > io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest( > > ServletInitialHandler.java:104) > > > io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) > > > > io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805) > > > > > > java.util.concurrent.ThreadPoolExecutor.runWorker( > > ThreadPoolExecutor.java:1149) > > > > > > java.util.concurrent.ThreadPoolExecutor$Worker.run( > > ThreadPoolExecutor.java:624) > > > java.lang.Thread.run(Thread.java:748) > > > > > -- > > e: davelnew...@gmail.com > > m: 908-380-8699 > > s: davelnewton_skype > > t: @dave_newton <https://twitter.com/dave_newton> > > b: Bucky Bits <http://buckybits.blogspot.com/> > > g: davelnewton <https://github.com/davelnewton> > > so: Dave Newton <http://stackoverflow.com/users/438992/dave-newton> > > > -- e: davelnew...@gmail.com m: 908-380-8699 s: davelnewton_skype t: @dave_newton <https://twitter.com/dave_newton> b: Bucky Bits <http://buckybits.blogspot.com/> g: davelnewton <https://github.com/davelnewton> so: Dave Newton <http://stackoverflow.com/users/438992/dave-newton>