首页 > 解决方案 > XADES4J:java.lang.NoSuchMethodError:org.apache.xml.security.signature.XMLSignature

问题描述

使用 XADES4J 运行应用程序时出现此错误,有人知道发生了什么吗?我在代码、库列表和错误堆栈跟踪下面让你失望了。如果有人可以帮助我,我将非常感激。

private static void signBes(Document doc) throws Exception {
       Element elem = doc.getDocumentElement();
       DOMHelper.useIdAsXmlId(elem);

       KeyingDataProvider kdp = new FileSystemKeyStoreKeyingDataProvider("PKCS12","C:\\******\\******.pfx",new FirstCertificateSelector(),new DirectPasswordProvider("******"),new DirectPasswordProvider("******"),true);
       DataObjectDesc obj = new DataObjectReference("#" + elem.getAttribute("Id")).withTransform(new EnvelopedSignatureTransform()); 
       SignedDataObjects dataObjs = new SignedDataObjects().withSignedDataObject(obj);
       XadesBesSigningProfile signingProfile = new XadesBesSigningProfile(kdp);
       
       XadesSigner signer = signingProfile.newSigner();
       //Here throws the error -> signer.sign(dataObjs, elem);
    
       TransformerFactory tFactory = TransformerFactory.newInstance();
       Transformer transformer = tFactory.newTransformer();
       DOMSource source = new DOMSource(doc);        
       StreamResult result = new StreamResult(new File("C:/aTicketBAI_firmat.xml"));
       transformer.transform(source, result);
}

图书馆清单

javax.servlet.ServletException: java.lang.NoSuchMethodError: org.apache.xml.security.signature.XMLSignature.(Lorg/w3c/dom/Document;Ljava/lang/String;Lorg/w3c/dom/Element;Lorg/w3c /dom/Element;)V 在 weblogic.servlet.internal.FilterChainImpl 在 weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) 在 weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:394)。 doFilter(FilterChainImpl.java:78) 在 oracle.security.jps.ee.http.JpsAbsFilter$3.run(JpsAbsFilter.java:175) 在 java.security.AccessController.doPrivileged(Native Method) 在 oracle.security.jps.util .JpsSubject.doAsPrivileged(JpsSubject.java:315) 在 oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:650) 在 oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java :112) 在 oracle.security.jps.ee.http.JpsAbsFilter。doFilterInternal(JpsAbsFilter.java:293) 在 oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:150) 在 oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:94)在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) 在 oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:248) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) )在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) 在 weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java: 32) 在 weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78) 在 weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:第 3797 章(SecurityManager.java:197) 在 weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203) 在 weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71) 在 weblogic.servlet.internal.WebAppServletContext。 doSecuredExecute(WebAppServletContext.java:2451) 在 weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2299) 在 weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2277) 在 weblogic.servlet.internal.ServletRequestImpl .runInternal(ServletRequestImpl.java:1720) 在 weblogic。servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1680) 在 weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272) 在 weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352) 在 weblogic .invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337) 在 weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57) 在 weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41) 在 weblogic.work.SelfTuningWorkManagerImpl。 runWorkUnderContext(SelfTuningWorkManagerImpl.java:655) 在 weblogic.work.ExecuteThread.execute(ExecuteThread.java:420) 在 weblogic.work.ExecuteThread.run(ExecuteThread.java:360) 原因:java.lang.NoSuchMethodError: org.apache .xml。security.signature.XMLSignature.(Lorg/w3c/dom/Document;Ljava/lang/String;Lorg/w3c/dom/Element;Lorg/w3c/dom/Element;)V at xades4j.production.SignerBES.createSignature(SignerBES. java:320) 在 xades4j.production.SignerBES.sign(SignerBES.java:164) 在 xades4j.production.SignerBES.sign(SignerBES.java:127) 在 ccalgir.webservice.wsticketbai.ticketBAI.signBes(ticketBAI.java:813 ) 在 ccalgir.webservice.wsticketbai.ticketBAI.generateTicketBAI(ticketBAI.java:722) 在 ccalgir.webservice.wsticketbai.ticketBAI.doGet(ticketBAI.java:72) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java: 687) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 在 weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:295) 在 weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run (存根安全助手。java:260) 在 weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137) 在 weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:353) ... 36 更多

我在我的 xmlsec-2.2.0 库中查找了该方法,发现它与给出错误“XMLSignature(Document p1,String p2,Element p3,Element p4)”的方法相同。我有这个方法,但是当我运行它时,它没有找到它。

标签: javajdeveloperxades4j

解决方案


推荐阅读