2

私は他の人がクライアントとして公開しているWebサービスにアクセスしておりaxis2、abcStub .java(バッチを実行して作成されたスタブJavaファイル)のラッパーメソッドを作成し、ラッパーJavaファイル内でスタブファイルをインスタンス化しようとしました。しかし、次のエラーが発生します。

    情報:エラーorg.apache.struts.actions.DispatchAction-メソッド'remTransApprove'へのディスパッチ[/remittanceTransaction]が例外を返しました
    java.lang.reflect.InvocationTargetException
    sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で
    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(ネイティブメソッド)で
    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.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があります。サーブレットエンジン内で実行していると思います。次のコードを試して、このバージョンが保存されている場所を特定し、修正してください。

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