Estou desenvolvendo um módulo de NF-e na parte de assinatura obtenho o seguinte erro:
error: package org.jcp.xml.dsig.internal.dom does not exist
XMLSignatureFactory fac = XMLSignatureFactory.getInstance(“DOM”, new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
No entanto é estranho uma vez que o Netbeans não grifa a linha como se tivesse erro, ao contrário ele até sugere o import caso eu remova o pacote da frente do nome da Classe. Pelo que andei pesquisando essa classe existe e está presente no rt.jar que é um arquivo encontrado no Java por padrão. Até descompactei aqui o rt.jar e realmente tem o pacote e a classe. Mas não consigo executar a aplicação por causa do erro acima.
error: package org.jcp.xml.dsig.internal.dom does not exist
XMLSignatureFactory fac = XMLSignatureFactory.getInstance(“DOM”, new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
Sei que sera mais uma pergunta minha que ninguem responde, mas vou arricar, estou com o mesmo erro acima num aclasse de assinatura, faz o import corrto e tudo porém não gera o war da app aguma luz ???
D
danilo.magrini
Eu criei uma classe própria com o código abaixo que é o mesmo do XMLDSigRI. Aí eu substituo a criação do objeto new org.jcp.xml.dsig.internal.dom.XMLDSigRI() pelo da minha classe. Aqui funcionou.
packagemeu.pacote;importjava.security.AccessController;importjava.security.Provider;importjava.util.HashMap;importjava.util.Map;importjavax.xml.crypto.dsig.CanonicalizationMethod;importjavax.xml.crypto.dsig.Transform;/** * The XMLDSig RI Provider. * * @author Joyce Leung *//** * Defines the XMLDSigRI provider. */publicfinalclassMeuXMLDSigRIextendsProvider{staticfinallongserialVersionUID=-5049765099299494554L;privatestaticfinalStringINFO="XMLDSig "+"(DOM XMLSignatureFactory; DOM KeyInfoFactory)";publicXMLDSigRISaybien(){/* We are the XMLDSig provider */super("XMLDSig",1.0,INFO);finalMapmap=newHashMap();map.put("XMLSignatureFactory.DOM","org.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory");map.put("KeyInfoFactory.DOM","org.jcp.xml.dsig.internal.dom.DOMKeyInfoFactory");// Inclusive C14Nmap.put((String)"TransformService."+CanonicalizationMethod.INCLUSIVE,"org.jcp.xml.dsig.internal.dom.DOMCanonicalXMLC14NMethod");map.put("Alg.Alias.TransformService.INCLUSIVE",CanonicalizationMethod.INCLUSIVE);map.put((String)"TransformService."+CanonicalizationMethod.INCLUSIVE+" MechanismType","DOM");// InclusiveWithComments C14Nmap.put((String)"TransformService."+CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,"org.jcp.xml.dsig.internal.dom.DOMCanonicalXMLC14NMethod");map.put("Alg.Alias.TransformService.INCLUSIVE_WITH_COMMENTS",CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS);map.put((String)"TransformService."+CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS+" MechanismType","DOM");// Exclusive C14Nmap.put((String)"TransformService."+CanonicalizationMethod.EXCLUSIVE,"org.jcp.xml.dsig.internal.dom.DOMExcC14NMethod");map.put("Alg.Alias.TransformService.EXCLUSIVE",CanonicalizationMethod.EXCLUSIVE);map.put((String)"TransformService."+CanonicalizationMethod.EXCLUSIVE+" MechanismType","DOM");// ExclusiveWithComments C14Nmap.put((String)"TransformService."+CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS,"org.jcp.xml.dsig.internal.dom.DOMExcC14NMethod");map.put("Alg.Alias.TransformService.EXCLUSIVE_WITH_COMMENTS",CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS);map.put((String)"TransformService."+CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS+" MechanismType","DOM");// Base64 Transformmap.put((String)"TransformService."+Transform.BASE64,"org.jcp.xml.dsig.internal.dom.DOMBase64Transform");map.put("Alg.Alias.TransformService.BASE64",Transform.BASE64);map.put((String)"TransformService."+Transform.BASE64+" MechanismType","DOM");// Enveloped Transformmap.put((String)"TransformService."+Transform.ENVELOPED,"org.jcp.xml.dsig.internal.dom.DOMEnvelopedTransform");map.put("Alg.Alias.TransformService.ENVELOPED",Transform.ENVELOPED);map.put((String)"TransformService."+Transform.ENVELOPED+" MechanismType","DOM");// XPath2 Transformmap.put((String)"TransformService."+Transform.XPATH2,"org.jcp.xml.dsig.internal.dom.DOMXPathFilter2Transform");map.put("Alg.Alias.TransformService.XPATH2",Transform.XPATH2);map.put((String)"TransformService."+Transform.XPATH2+" MechanismType","DOM");// XPath Transformmap.put((String)"TransformService."+Transform.XPATH,"org.jcp.xml.dsig.internal.dom.DOMXPathTransform");map.put("Alg.Alias.TransformService.XPATH",Transform.XPATH);map.put((String)"TransformService."+Transform.XPATH+" MechanismType","DOM");// XSLT Transformmap.put((String)"TransformService."+Transform.XSLT,"org.jcp.xml.dsig.internal.dom.DOMXSLTTransform");map.put("Alg.Alias.TransformService.XSLT",Transform.XSLT);map.put((String)"TransformService."+Transform.XSLT+" MechanismType","DOM");AccessController.doPrivileged(newjava.security.PrivilegedAction(){@OverridepublicObjectrun(){putAll(map);returnnull;}});}}
aix
danilo.magrini:
Eu criei uma classe própria com o código abaixo que é o mesmo do XMLDSigRI. Aí eu substituo a criação do objeto new org.jcp.xml.dsig.internal.dom.XMLDSigRI() pelo da minha classe. Aqui funcionou.
…
obrigado ja resolvi, a lib xmlsec.jar resolveu o problema, mas agradeço, abraços.