【发布时间】:2017-09-08 23:40:31
【问题描述】:
我正在使用 tomcat 8.5.13 和 Struts 2.5.2 运行开发服务器。
我将 struts jar 升级到 2.5.10.1,现在部署战争时出现此错误:
2017-04-13 06:26:59.565|DEBUG|localhost-startStop-31|Creating revision for URL: jar:file:/usr/local/apache-tomcat-8.5.13/webapps/ROOT/WEB-INF/lib/struts2-core-2.5.10.1.jar!/struts-default.xml
2017-04-13 06:26:59.578|DEBUG|localhost-startStop-31|Loaded action configuration from: struts-default.xml
2017-04-13 06:26:59.578|DEBUG|localhost-startStop-31|Substituting value [ java.lang.Object, java.lang.Runtime, java.lang.System, java.lang.Class, java.lang.ClassLoader, java.lang.Shutdown, java.lang.ProcessBuilder, ognl.OgnlContext, ognl.ClassResolver, ognl.TypeConverter, ognl.MemberAccess, ognl.DefaultMemberAccess, com.opensymphony.xwork2.ognl.SecurityMemberAccess, com.opensymphony.xwork2.ActionContext] using [com.opensymphony.xwork2.config.providers.EnvsValueSubstitutor]
2017-04-13 06:26:59.578|DEBUG|localhost-startStop-31|Substituting value java.lang.Object, java.lang.Runtime, java.lang.System, java.lang.Class, java.lang.ClassLoader, java.lang.Shutdown, java.lang.ProcessBuilder, ognl.OgnlContext, ognl.ClassResolver, ognl.TypeConverter, ognl.MemberAccess, ognl.DefaultMemberAccess, com.opensymphony.xwork2.ognl.SecurityMemberAccess, com.opensymphony.xwork2.ActionContext with proper System variable or environment variable
2017-04-12 19:59:30.243|ERROR|localhost-startStop-29|Dispatcher initialization failed
java.lang.NullPointerException: null
at java.util.Hashtable.put(Hashtable.java:459) ~[?:1.8.0_101]
at java.util.Properties.setProperty(Properties.java:166) ~[?:1.8.0_101]
at org.apache.commons.lang3.text.StrLookup.copyProperties(StrLookup.java:73) ~[commons-lang3-3.4.jar:3.4]
at org.apache.commons.lang3.text.StrLookup.systemPropertiesLookup(StrLookup.java:99) ~[commons-lang3-3.4.jar:3.4]
at org.apache.commons.lang3.text.StrSubstitutor.replaceSystemProperties(StrSubstitutor.java:231) ~[commons-lang3-3.4.jar:3.4]
at com.opensymphony.xwork2.config.providers.EnvsValueSubstitutor.substitute(EnvsValueSubstitutor.java:39) ~[struts2-core-2.5.10.1.jar:2.5.10.1]
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:282) ~[struts2-core-2.5.10.1.jar:2.5.10.1]
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:98) ~[struts2-core-2.5.10.1.jar:2.5.10.1]
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:165) ~[struts2-core-2.5.10.1.jar:2.5.10.1]
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) ~[struts2-core-2.5.10.1.jar:2.5.10.1]
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:906) ~[struts2-core-2.5.10.1.jar:2.5.10.1]
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:445) ~[struts2-core-2.5.10.1.jar:2.5.10.1]
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:486) [struts2-core-2.5.10.1.jar:2.5.10.1]
at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:75) [struts2-core-2.5.10.1.jar:2.5.10.1]
at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:63) [struts2-core-2.5.10.1.jar:2.5.10.1]
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) [catalina.jar:8.5.13]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) [catalina.jar:8.5.13]
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) [catalina.jar:8.5.13]
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4590) [catalina.jar:8.5.13]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233) [catalina.jar:8.5.13]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:8.5.13]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) [catalina.jar:8.5.13]
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) [catalina.jar:8.5.13]
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) [catalina.jar:8.5.13]
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:952) [catalina.jar:8.5.13]
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1823) [catalina.jar:8.5.13]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_101]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_101]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_101]
我认为这已经解决了,因为当我重新启动 Tomcat 时一切正常。但是,当我只是在不重新启动的情况下移动新的 WAR 时,有时(但不是每次)我仍然会收到此错误。每当我重新启动 Tomcat 时,过滤器都会正常启动。我的 struts.xml 中的常量是:
<constant name="struts.action.extension" value=",html" />
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex" />
<constant name="struts.ui.theme" value="css_xhtml" />
这是 WEB-INF/lib 下库中的 JAR
activation-1.1.jar
aws-java-sdk-core-1.11.119.jar
aws-java-sdk-kms-1.11.119.jar
aws-java-sdk-s3-1.11.119.jar
c3p0-0.9.1.1.jar
commonj.sdo-2.1.1.jar
commons-beanutils-1.9.2.jar
commons-codec-1.9.jar
commons-collections-3.2.2.jar
commons-digester-1.8.1.jar
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
commons-lang-2.6.jar
commons-lang3-3.4.jar
commons-logging-1.2.jar
commons-validator-1.6.jar
eclipselink-2.6.4.jar
freemarker-2.3.23.jar
hamcrest-core-1.1.jar
httpclient-4.5.3.jar
httpcore-4.4.6.jar
ion-java-1.0.2.jar
jackson-annotations-2.6.6.jar
jackson-core-2.6.6.jar
jackson-databind-2.6.6.jar
jackson-dataformat-cbor-2.6.6.jar
javassist-3.20.0-GA.jar
javax.json-1.0.4.jar
javax.persistence-2.1.1.jar
jaxwsapi-1.2.0.jar
jmespath-java-1.11.119.jar
joda-time-2.8.1.jar
json-simple-1.1.1.jar
junit-4.10.jar
log4j-1.2.16.jar
log4j-api-2.7.jar
log4j-core-2.7.jar
mail-1.4.7.jar
mysql-connector-java-6.0.6.jar
ognl-3.1.12.jar
org.osgi.core-4.2.0.jar
poi-3.13.jar
quartz-2.2.3.jar
slf4j-api-1.7.7.jar
struts2-core-2.5.10.1.jar
validation-api-1.1.0.Final.jar
【问题讨论】:
-
在 struts.xml 文件中显示
constants。 -
请提供添加到 lib 文件夹 Richard 中的文件
-
常量和 lib jar 都已添加到问题中。提前感谢您对此提供的任何帮助。
-
@RichardH 您的系统属性有些问题。您是否删除/修改它们?尝试
commons-lang3-3.5.jar,看看问题是否仍然存在。
标签: configuration struts2 migration tomcat8