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("******"),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);
}

Library List

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.ServletStubImpl.execute(ServletStubImpl.java:394) 在 weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) 在 weblogic.servlet.internal.FilterChainImpl.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) 在 oracle.jrf.servlet.ExtensibleGlobalFilter.doFilter(ExtensibleGlobalFilter.java:92) 在 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) 在 weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3763) 在 weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:344) 在 weblogic.security.service.SecurityManager.runAsForUserCode(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 在 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(StubSecurityHelper.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)”的方法相同。我有这个方法,但是当我运行它时,它没有找到它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...