2017-07-27 15 views
1


我從遷移的Struts 2.3.3項目和Struts 2.5.12,我看到NullPointerException利用ActionSupportgetText方法時。Struts2.5.12 - NPE同時使用gettext的方法從ActionSupport中

我的動作類擴展了ActionSupport類。我還有打包在war文件中的package.properties文件。

我的動作類的樣子:

public class MyAction extends ActionSupport { 
    private List<String> months = new ArrayList<>(
      Arrays.asList(getText("date.month.default"), "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12")); 
} 

而在package.properties文件我有

date.month.default=MM 

我看到下面的異常,當我的動作類的bean被實例化。有人知道我在這裏做錯了什麼嗎?

ERROR DefaultDispatcherErrorHandler Exception occurred during processing request: Unable to instantiate Action, entryAction, defined for 'entry' in namespace '/'Error creating bean with name 'entryAction' defined in "/D:/Software/JBossEAP/jboss-eap-7.0/bin/content/Member.war/WEB-INF/classes/my/company/member/web/action/entry/spring-context.xml": Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.company.member.web.action.entry.EntryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException 
Unable to instantiate Action, entryAction, defined for 'entry' in namespace '/'Error creating bean with name 'entryAction' defined in "/D:/Software/JBossEAP/jboss-eap-7.0/bin/content/Member.war/WEB-INF/classes/my/company/member/web/action/entry/spring-context.xml": Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.company.member.web.action.entry.EntryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException - action - vfs:/D:/Software/JBossEAP/jboss-eap-7.0/bin/content/Member.war/WEB-INF/classes/struts-default.xml:133:44 
    at com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:318) 
    at com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399) 
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:204) 
    at org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:62) 
    at org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37) 
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) 
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567) 
    at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81) 
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:143) 
    at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) 
    at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 
    at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) 
    at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
    at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
    at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
    at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 
    at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
    at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) 
    at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) 
    at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) 
    at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
    at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:285) 
    at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:264) 
    at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) 
    at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:175) 
    at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) 
    at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:792) 
    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: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entryAction' defined in "/D:/Software/JBossEAP/jboss-eap-7.0/bin/content/Member.war/WEB-INF/classes/my/company/member/web/action/entry/spring-context.xml": Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.company.member.web.action.entry.EntryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:965) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1075) 
    at com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:159) 
    at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:172) 
    at com.opensymphony.xwork2.factory.DefaultActionFactory.buildAction(DefaultActionFactory.java:22) 
    at com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:137) 
    at com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299) 
    ... 37 more 
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [my.company.member.web.action.entry.EntryAction]: Constructor threw exception; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:141) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:74) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:958) 
    ... 48 more 
Caused by: java.lang.NullPointerException 
    at com.opensymphony.xwork2.ActionSupport.getTextProvider(ActionSupport.java:278) 
    at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:83) 
    at my.company.member.web.action.MyAction.<init>(MyAction.java:95) 
    at my.company.member.web.action.entry.EntryAction.<init>(EntryAction.java:22) 
    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 org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126) 
    ... 50 more 

項目結構:
enter image description here

和建造的戰爭結構爲:
enter image description here

以下jar文件添加到WAR文件的WEB-INF/lib目錄下:
classworlds-1.1.jar
com.springsource.org.aopalliance-1.0.0.jar
comm ONS-模棱兩可-0.8.jar
公地鏈1.2.jar
公地消化器-1.8.jar
公地文件上傳-1.2.1.jar
公地HttpClient的-3.1.jar
公地-io的-2.4.jar
公地lang3-3.6.jar
公地驗證-1.3.1.jar
的freemarker-2.3.23.jar
GSON-2.1.jar
HttpClient的-4.3 beta1.jar
httpclient-osgi-4.3.jar
的HttpCore-4.2.2.jar
了Javassist-3.18.0-GA.jar
JAXRPC-API-1.1.jar
JCIFS-1.3.17.jar
的log4j-API-2.8.2.jar
OGNL-3.1.12.jar
口 - 2.0.8.jar
串行 - 2.7.1.jar
彈簧AOP-3.0.5.RELEASE.jar
彈簧-ASM-3.0.5.RELEASE。罐子
spring-beans-3.0.5.RELEASE.jar
spring-context-3.0.5.RELEASE.jar
彈簧上下文支撐3.0.5.RELEASE.jar
彈簧芯3.0.5.RELEASE.jar
彈簧表達-3.0.5.RELEASE.jar
彈簧JDBC-3.0.5。 RELEASE.jar
spring-jms-3.0.5.RELEASE.jar
spring-orm-3.0.5.RELEASE.jar
spring-remoting-2.0.8。罐子
彈簧TX-3.0.5.RELEASE.jar
彈簧網絡3.0.5.RELEASE.jar
Struts2的核心 - 2.5.12.jar
的struts2-JSON-插件-2.5.12。罐子
struts2的 - 彈簧 - 插件-2.5.12.jar
struts2的瓷磚-插件-2.5.12.jar
瓦片-API-3.0.7.jar
瓦片-autotag核運行時-1.2。罐
tiles-core-3.0.7.jar
tiles-el-3.0.7.jar
tiles-freemarker-3.0.7.jar
個 瓦片-JSP-3.0.7.jar
瓦片-OGNL-3.0.7.jar
瓦片請求-API-1.0.6.jar
瓦片-請求的freemarker-1.0.6.jar
瓷磚,請求JSP-1.0.6.jar
瓷磚-請求的servlet-1.0.6.jar
瓷磚-的servlet-3.0.7.jar
瓷磚,模板3.0.7.jar
wsdl4j- 1.5.1.jar
xml-apis-1.3.02.jar

+0

你可以張貼的動作類的源代碼? –

+0

Hi @RomanC,感謝您的回覆。我現在用動作類源代碼更新了我的問題。 – Prasann

+0

這是不夠的信息。如果堆棧跟蹤已滿,則存在依賴管理問題。 –

回答

1

您不應該使用名稱爲的文件。這是默認加載的配置文件。該應用程序的默認配置文件名是struts.xml

重命名該文件

struts-default.xml 

struts.xml 
+0

感謝羅馬,我不知道struts.properties沒有列出關鍵「struts.configuration.files」的struts-default.xml。現在我甚至可以使用struts-default.xml加入它,或者將它重命名爲struts.xml,並且它工作正常。 – Prasann

+0

也是upvote答案,它不會沒有它的幫助。 –

+0

我現在做了:) – Prasann