1

Dans une application, nous avons déclaré la classe Action comme un bean Spring. Cela fonctionne bien pour tous les mappages Struts.Cause inconnue de java.lang.ClassNotFoundException

<bean id="plantAdminApprovalAction" scope="prototype" 
     class="com.honda.naps.action.padmin.PlantAdminApprovalAction"> 
     <constructor-arg ref="plantAdminAppController" /> 
     <property name="plantAdminApprovalDTO" ref="plantAdminApprovalDTO"></property> 
</bean> 

Nous utilisons cela pour plusieurs supports cartographie

<action name="loadApprovalPlant" class="plantAdminApprovalAction" method="loadNAPSApprovalScreenFinal" > 
    <result name="success" type="tiles">ApprovalWorkflowPlant</result> 
</action> 
<action name="loadMandatoryApprovalScreenFinal" class="plantAdminApprovalAction" method="loadMandatoryApprovalScreenFinal" > 
    <result name="success" type="tiles">MandatoryApprovalWorkflowPlant</result> 
</action> 
<action name="deleteTransportApprover" class="plantAdminApprovalAction" method="deleteTransportApprover"> 
    <result name="success" type="tiles">ApprovalWorkflowPlant</result> 
</action> 
<action name="deleteApprover" class="plantAdminApprovalAction" method="deleteApprover"> 
    <result name="success" type="redirect-action">loadMandatoryApprovalScreenFinal</result> 
</action> 
<action name="insertApprover" class="plantAdminApprovalAction" method="insertApprover"> 
    <result name="success">/jsps/padmin/addApproverMsg.jsp</result> 
</action> 
<action name="addNonMandateDepartment" class="plantAdminApprovalAction" method="addNonMandateDepartment"> 
    <result name="success">/jsps/padmin/addDepartment.jsp</result> 
</action> 
<action name="insertDeptApprover" class="plantAdminApprovalAction" method="insertDeptApprover"> 
    <result name="success">/jsps/padmin/addnonmandeptMsg.jsp</result> 
</action> 
<action name="addApprover" class="plantAdminApprovalAction" method="addApprover"> 
    <result name="success">/jsps/padmin/addApprover.jsp</result> 
</action> 
<action name="deleteDeptApprover" class="plantAdminApprovalAction" method="deleteDepartmentApprovers"> 
    <result name="success" type="redirect-action">loadApprovalPlant</result> 
</action> 

à toute déclaration de mise en correspondance d'action, il fonctionne bien, mais une déclaration, il se brise et jeter ci-dessous exception:

2015-08-11 05:02:04,843 ERROR com.honda.naps.interceptor.NAPSCustomExceptionInterceptor (NAPSLogger.java:141) - Line Number: 141 ---> Entering exception handler logic. 
java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [PlantAdminApprovalAction] 
    at org.apache.struts2.convention.ConventionsServiceImpl.determineResultPath(ConventionsServiceImpl.java:100) 
    at org.apache.struts2.convention.ConventionUnknownHandler.determinePath(ConventionUnknownHandler.java:385) 
    at org.apache.struts2.convention.ConventionUnknownHandler.handleUnknownResult(ConventionUnknownHandler.java:274) 
    at com.opensymphony.xwork2.DefaultUnknownHandlerManager.handleUnknownResult(DefaultUnknownHandlerManager.java:87) 
    at com.opensymphony.xwork2.DefaultActionInvocation.createResult(DefaultActionInvocation.java:226) 
    at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:367) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:277) 
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) 
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:314) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166) 
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at com.honda.naps.interceptor.NAPSCustomExceptionInterceptor.intercept(NAPSCustomExceptionInterceptor.java:54) 
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) 
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485) 
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125) 
    at com.honda.naps.filter.ClipGZipFilter.doFilter(ClipGZipFilter.java:121) 
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:89) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:80) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:997) 
    at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.invokeFilters(DefaultExtensionProcessor.java:1078) 
    at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:998) 
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3954) 
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276) 
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:942) 
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592) 
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515) 
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306) 
    at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83) 
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1646) 
Caused by: java.lang.ClassNotFoundException: PlantAdminApprovalAction 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:434) 
    at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:191) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:660) 
    at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:111) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:626) 
    at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62) 
    at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58) 
    at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:511) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:626) 
    at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:511) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:626) 
    at org.apache.struts2.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:111) 
    at org.apache.struts2.convention.ConventionsServiceImpl.determineResultPath(ConventionsServiceImpl.java:98) 
    ... 97 more 

Malheureusement , cela ne se produit pas dans les environnements Eclipse et Test, mais cela se produit dans un environnement de contrôle qualité. Besoin de quelques idées et contributions pour ce problème.

+0

Quelle version de S2 utilisez-vous? Quelle action exacte ne fonctionne pas? –

+0

Avec le plugin S2 spring utilisant id bean dans struts.xml l'attribut de classe d'action devrait fonctionner. –

+0

@Aleksandr M pouvez-vous s'il vous plaît fournir le nom complet du plugin? Je crois, cela devrait être le fichier jar mis à jour. –

Répondre

1

causés par: java.lang.ClassNotFoundException: PlantAdminApprovalAction

Il attend un nom de classe valide (FQCN) à utiliser pour la classe d'action. Par exemple

<action name="loadApprovalPlant" class="com.honda.naps.action.padmin.PlantAdminApprovalAction" method="loadNAPSApprovalScreenFinal" > 
    <result name="success" type="tiles">ApprovalWorkflowPlant</result> 
</action> 
+0

Merci de fournir les étapes. Pouvez-vous me donner l'extrait de code par étapes? Cela donnera plus de clarté à moi et à quiconque a lu votre réponse. –

+0

J'ai déjà essayé mais ça n'a pas marché. –