2

我正在访问由其他人作为客户端使用的 Web服务,axis2并且我为 abcStub .java (通过运行一些批处理生成的存根 java 文件)创建了一个包装方法,并尝试在包装 java 文件中实例化存根文件。但我收到以下错误:

    信息:错误 org.apache.struts.actions.DispatchAction - Dispatch[/remittanceTransaction] 到方法“remTransApprove”返回异常
    java.lang.reflect.InvocationTargetException
    在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    在 java.lang.reflect.Method.invoke(Method.java:601)
    引起:java.lang.NoSuchMethodError: org.apache.neethi.PolicyEngine.getPolicy(Ljava/lang/Object;)Lorg/apache/neethi/Policy;
    在 org.tempuri.MIRSRemittanceServicesStub.getPolicy(MIRSRemittanceServicesStub.java:3558)
    在 org.tempuri.MIRSRemittanceServicesStub.populateAxisService(MIRSRemittanceServicesStub.java:57)
    在 org.tempuri.MIRSRemittanceServicesStub.(MIRSRemittanceServicesStub.java:268)
    在 org.tempuri.MIRSRemittanceServicesStub.(MIRSRemittanceServicesStub.java:257)
    在 org.tempuri.MIRSRemittanceServicesStub.(MIRSRemittanceServicesStub.java:305)
    信息:g.tempuri.MIRSRemittanceServicesStub.(MIRSRemittanceServicesStub.java:297)
    在 com.mtmrs.webservice.MIRSRemittanceTransactionManagerImpl.getAppDeclWrapper(MIRSRemittanceTransactionManagerImpl.java:201)
    在 com.mtmrs.business.backoffice.impl.RemittanceTransactionManagerImpl.remTransApprove(RemittanceTransactionManagerImpl.java:1417)
    在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    在 com.mtmrs.application.backoffice.action.RemittanceTransactionAction.remTransApprove(RemittanceTransactionAction.java:1409)
    ... 78 更多
    信息:警告 org.apache.struts.action.RequestProcessor - 抛出未处理的异常:类 javax.servlet.ServletException
     警告:StandardWrapperValve [action]:PWC1406:Servlet 操作的 Servlet.service() 引发异常
    java.lang.NoSuchMethodError: org.apache.neethi.PolicyEngine.getPolicy(Ljava/lang/Object;)Lorg/apache/neethi/Policy;
    在 org.tempuri.MIRSRemittanceServicesStub.getPolicy(MIRSRemittanceServicesStub.java:3558)
    在 org.tempuri.MIRSRemittanceServicesStub.populateAxisService(MIRSRemittanceServicesStub.java:57)
    在 org.tempuri.MIRSRemittanceServicesStub.(MIRSRemittanceServicesStub.java:268)

我认为这一定有问题

org.apache.neethi.PolicyEngine.getPolicy(Ljava/lang/Object;)Lorg/apache/neethi/Policy; 

或者我可能错了。无论哪种方式,不知道如何解决。如果有人知道以前面对/解决过这个问题,那将会有很大帮助。

我在拨打以下电话时得到了这个:

public String getAppDeclWrapper(String session, String parentAgent, String mirsTxnNo, String strReason, String isApprove, String modifiedBY){ String returnString = null;
try {

         mtmrsLogger.info("Entering into Approve Decline procedure, Starting to send Status to MIRS");
               MIRSRemittanceServicesStub stub  = new MIRSRemittanceServicesStub(); //Error occurs at this line

               ApproveDecline approvedEcline = new ApproveDecline();
               ApproveDeclineResponse approveResponse =  new ApproveDeclineResponse();
               approvedEcline.setCParentAgent(parentAgent);
               approvedEcline.setMirsSession(session);
               approvedEcline.setModifiedBy(modifiedBY);
               approvedEcline.setRefNo(mirsTxnNo);
               approvedEcline.setStrReason(strReason);
               approvedEcline.setIsApprove(isApprove);

4

1 回答 1

1

我的猜测是您的类路径上有多个版本(或无效版本)的 PolicyEngine。我认为您在 servlet 引擎中运行。尝试以下代码来确定此版本的存储位置并修复它:

org.apache.neethi.PolicyEngine.class.getProtectionDomain().getCodeSource().getLo‌​cation() 
于 2012-12-19T03:33:59.047 回答