Erro de pacote inexistente, mas existe!

3 respostas
D

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.

Alguém tem alguma sugestão?

3 Respostas

aix

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

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.

package meu.pacote;

import java.security.AccessController;
import java.security.Provider;
import java.util.HashMap;
import java.util.Map;
import javax.xml.crypto.dsig.CanonicalizationMethod;
import javax.xml.crypto.dsig.Transform;

/**
 * The XMLDSig RI Provider.
 *
 * @author Joyce Leung
 */

/**
 * Defines the XMLDSigRI provider.
 */

public final class MeuXMLDSigRI extends Provider {

    static final long serialVersionUID = -5049765099299494554L;

    private static final String INFO = "XMLDSig " + 
    "(DOM XMLSignatureFactory; DOM KeyInfoFactory)";

    public XMLDSigRISaybien() {
	/* We are the XMLDSig provider */
	super("XMLDSig", 1.0, INFO);
	
	final Map map = new HashMap();
        map.put("XMLSignatureFactory.DOM", 
	        "org.jcp.xml.dsig.internal.dom.DOMXMLSignatureFactory");
        map.put("KeyInfoFactory.DOM", 
	        "org.jcp.xml.dsig.internal.dom.DOMKeyInfoFactory");


	// Inclusive C14N
	map.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 C14N
	map.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 C14N
	map.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 C14N
	map.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 Transform
	map.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 Transform
	map.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 Transform
	map.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 Transform
	map.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 Transform
	map.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(new java.security.PrivilegedAction() {
            @Override
	    public Object run() {
		putAll(map);
		return null;
	    }
	});
    }

}
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.

Criado 29 de março de 2012
Ultima resposta 17 de mai. de 2012
Respostas 3
Participantes 2