GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro Após Atualização Java. Problema Deles ou Meu? (RESOLVIDO)

Boa Tarde Galera…

Tenho um Sistema Emissor de Nota fiscal Eletronica Funionando a Todo Vapor!

Mas ontem, em alguns clientes , começaram a dar erro ao Assinar o XML!

Seguinte Erro : javax.xml.crypto.URIReferenceException: com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID NFe52130601182484000108550010000100031012691580
Hoje após uma bateria de teste e uma noite sem dormir, descubro que o erro só acontece em maquinas que atualizaram para o JAva 7 versão 25, a atual.

Dai Como proceder? Meu Codigo está correto, pois funciona a anos.
Existe algum canal que eu possa reclamar? E se tiver acredito que sei muito superficialmente sobre o erro Para relatar o Bug!

Alguém pode me dar uma opinião?

Crio este Topico para pessoas que estão passando pelo mesmo problema!

Este é o canal:

http://bugs.sun.com/

(Para ver que nem mexeram no sistema mesmo depois que a Oracle comprou a Sun, faz alguns anos…)

Enquanto isso (há bugs que estão abertos há mais de 10 anos), dê um jeito e teste sua aplicação com a versão mais nova do JDK…

https://issues.apache.org/jira/browse/SANTUARIO-312

Pelo que imagino, esse problema (que foi reportado há mais de um ano, mas não exatamente no JDK, e sim em bibliotecas que ele importa) somente começou a aparecer agora porque essas bibliotecas devem ter sido atualizadas recentemente no JDK.

Fala Cara… Obrigado Pela Resposta.

Ontem no meu desespero já tinha achado em topico citado acima. (Fui até a pagina 25 do Google)

E mesmo assim não deu certo.

Sobre o Update a Oracle lançou -> http://www.oracle.com/technetwork/java/javase/7u25-relnotes-1955741.html.

Estou fazendo testes em cima dessas modificações, principalmente sobre:

[quote]New property for Secure Validation of XML
To avoid potential security issues with XML signatures, a secure validation mode has been added whereby signatures that contain potentially hostile constructs are rejected and not processed.

For this purpose, the following new private property is added to the JDK:

org.jcp.xml.dsig.secureValidation
The property can be set by an application by calling the setProperty method of the javax.xml.crypto.dsig.dom.DOMValidateContext class with the name of the property above and a Boolean value.

When set to true, this property instructs the implementation to process XML signatures more securely. This will set limits on various XML signature constructs to avoid conditions such as denial of service attacks.

When not set, or set to false, the property instructs the implementation to process XML signatures according to the XML Signature specification without any special limits.

If a SecurityManager is enabled, the property is set to true by default.[/quote]

Se Alguem passou pelo mesmo Erro e teve sucesso por favor me Avise… Abraços!

Estava com o mesmo problema e utilizando a dica do entanglement funcionou.

Apenas adicionei a seguinte linha de código após criar o objeto Document e pegar o elemento principal:

el.setIdAttribute("Id", true);

Ontem, em algumas tentativas também cheguei a adicionar o seguinte trecho, porém acredito que não mudou em nada:

System.setProperty("org.jcp.xml.dsig.secureValidation", "false");

Em todo caso, segue o método que utilizo para assinar o XML:

	public static String assinaRaiz(String xml) throws Exception {   
		
		System.setProperty("org.jcp.xml.dsig.secureValidation", "false");
		
	    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   
	    factory.setNamespaceAware(true);   
	    Document doc = factory.newDocumentBuilder().parse(   
	            new ByteArrayInputStream(xml.getBytes()));   
	  
	    doc.getDocumentElement().removeAttribute("xmlns:ns2");   
	     
	    Node element = doc.getDocumentElement().getFirstChild();
	    
	    if(element.getNodeType() != Node.ELEMENT_NODE){	    	
	    	element = element.getNextSibling();	    	
	    }	    	
	    	
	    Element el = (Element) element;
	    
	    String id = el.getAttribute("Id"); 
	    
	    el.setIdAttribute("Id", true);   
	  
	    // Create a DOM XMLSignatureFactory that will be used to   
	    // generate the enveloped signature.   
	    XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");   
	  
	    // Create a Reference to the enveloped document (in this case,   
	    // you are signing the whole document, so a URI of "" signifies   
	    // that, and also specify the SHA1 digest algorithm and   
	    // the ENVELOPED Transform.   
	    ArrayList transformList = new ArrayList();   
	    TransformParameterSpec tps = null;   
	    Transform envelopedTransform = fac.newTransform(Transform.ENVELOPED,   
	            tps);   
	    Transform c14NTransform = fac.newTransform(   
	            "http://www.w3.org/TR/2001/REC-xml-c14n-20010315", tps);   
	  
	    transformList.add(envelopedTransform);   
	    transformList.add(c14NTransform);   
	  
	    // Load the KeyStore and get the signing key and certificate.   
	  
	    Token.inicializarToken();
	    Token tk = Token.getInstance();    
	  
	    X509Certificate cert = tk.getCertificate();   
	  
	    // Create the KeyInfo containing the X509Data.   
	    KeyInfoFactory kif = fac.getKeyInfoFactory();   
	    List x509Content = new ArrayList();  
	    x509Content.add(cert);   
	    X509Data xd = kif.newX509Data(x509Content);   
	    KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));;   
	  
	    // Create a DOM XMLSignatureFactory that will be used to   
	    // generate the enveloped signature.   
	  
	    Reference ref = fac.newReference("#" + id, fac.newDigestMethod(   
	            DigestMethod.SHA1, null), transformList, null, null);   
	  
	    // Create the SignedInfo.   
	    SignedInfo si = fac   
	            .newSignedInfo(fac.newCanonicalizationMethod(   
	                    CanonicalizationMethod.INCLUSIVE,   
	                    (C14NMethodParameterSpec) null), fac   
	                    .newSignatureMethod(SignatureMethod.RSA_SHA1, null),   
	                    Collections.singletonList(ref));   
	  
	    // Create the XMLSignature, but don't sign it yet.   
	    XMLSignature signature = fac.newXMLSignature(si, ki);   
	  
	    // Marshal, generate, and sign the enveloped signature.   
	    // Create a DOMSignContext and specify the RSA PrivateKey and   
	    // location of the resulting XMLSignature's parent element.   
	    DOMSignContext dsc = new DOMSignContext(tk.getPrivateKeyFromToken(), doc   
	            .getDocumentElement());   
	    signature.sign(dsc); 
	  
	    // Output the resulting document.   
	    ByteArrayOutputStream os = new ByteArrayOutputStream();   
	    TransformerFactory tf = TransformerFactory.newInstance();   
	    Transformer trans = tf.newTransformer();   
	    trans.transform(new DOMSource(doc), new StreamResult(os));
	    
	    return os.toString();   
	}

Após a assinatura, tive problemas para enviar o XML ao SEFAZ, sendo necessário diminuir o nível de segurança no Painel de Controle do Java de meu cliente.

Espero que ajude.

Opa… Vou testar com suas dicas, e retorno Aqui!

E só a nivel de curiosidade o problema não foi assim tão incomum…

Imagino Quantas pessoas que utilizam o Emissor gratuito de São paulo vão ter dor de cabeça…

Realmente Era isso mesmo. Mais eu me esbarrei no case sensitive! Havia colocado “ID”.

Obrigado a Todos!

Muito bem.

Funcionou.

Apenas Com " el.setIdAttribute(“Id”, true); "

Mesmo colocando o codigo abaixo continuo com o mesmo problema
Instalei JDK 7u25
coloquei meu projeto para utilizar ela no NetBeans
mas nada.

el.setIdAttribute("Id", true);

POr favor coloque o Codigo Que vc usa para Assinar!

Bom dia, ainda continuo com o erro mesmo após inserir as duas linhas sitadas acima.

Alguém tem outra sugestão?

Posta seu cod ue… dai olhamos!

Segue trecho de assinatura

[code]public String assinar(int tipo, String xml) throws NFEException {
java.lang.System.setProperty(“org.jcp.xml.dsig.secureValidation”, “false”);
// tipo
// ‘1’ - NFE
// ‘2’ - CANCELAMENTO
// ‘3’ - INUTILIZACAO
// ‘4’ - EVENTO / Carta de correção eletrônica
// ‘5’ - EVENTO / Manifestação do Destinatário
// ‘6’ - EVENTO / Download da NFe
// ‘7’ - EVENTO / Consulta da NFe
String tag = “”;
String xsd = “”;
if(tipo == 1) {
tag = “infNFe”;
//xsd = xsdEnvNFe; //só é feita a validação do lote
} else if (tipo == 2 || tipo == 4 || tipo == 5 || tipo == 6 || tipo == 7) {
tag = “infEvento”;
if(tipo == 2){
xsd = xsdCancNFe;
}else if(tipo == 4){
xsd = xsdEnvCCe;
}else if(tipo == 5){
xsd = xsdManDest;
}
} else if (tipo == 3) {
tag = “infInut”;
xsd = xsdInutNFe;
}
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document docs = builder.parse(new StringBufferInputStream(xml));

		// Obtem elemento do documento a ser assinado, será criado uma
		// REFERENCE para o mesmo
		Node element = docs.getDocumentElement().getFirstChild();
	    if(element.getNodeType() != Node.ELEMENT_NODE){	    	
	    	element = element.getNextSibling();	    	
	    }	    	
	    Element el = (Element) element;
	    
		String id = el.getAttribute("Id");		    
	    el.setIdAttribute("Id", true);

		//System.out.println(id);
		
		// Create a DOM XMLSignatureFactory that will be used to
		// generate the enveloped signature.
		String providerName = System.getProperty(PROVIDER_NAME, PROVIDER_CLASS_NAME);
		XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", (Provider) Class.forName(providerName).newInstance());
		//XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
		
		// Create a Reference to the enveloped document (in this case,
		// you are signing the whole document, so a URI of "" signifies
		// that, and also specify the SHA1 digest algorithm and
		// the ENVELOPED Transform.
		ArrayList<Transform> transformList = new ArrayList<Transform>();
		TransformParameterSpec tps = null;
		Transform envelopedTransform = fac.newTransform(Transform.ENVELOPED,tps);
		Transform c14NTransform = fac.newTransform(C14N_TRANSFORM_METHOD, tps);
		transformList.add(envelopedTransform);
		transformList.add(c14NTransform);

		// Load the KeyStore and get the signing key and certificate.  
		KeyStore ks = null;
		if (certTipo.equals("PKCS11")) { //A3  
			Provider p = new sun.security.pkcs11.SunPKCS11(parametros.getProperty("nfe.certificado.token"));  
			Security.addProvider(p);  
			ks = KeyStore.getInstance("PKCS11");  
			ks.load(null, parametros.getProperty("nfe.certificado.pass").toCharArray());  
		} else { //A1
			System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");  
			Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());  
			ks = KeyStore.getInstance("PKCS12");  
			ks.load(
					new FileInputStream(parametros.getProperty("nfe.certificado.pfx")),
					parametros.getProperty("nfe.certificado.pass").toCharArray()
			);  
		}

		KeyStore.PrivateKeyEntry keyEntry = null;  
		Enumeration<String> aliasesEnum = ks.aliases();  
		while (aliasesEnum.hasMoreElements())   
		{  
			String alias = (String) aliasesEnum.nextElement();  
			if (ks.isKeyEntry(alias))   
			{  
				keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(parametros.getProperty("nfe.certificado.pass").toCharArray()));
				break;
			}  
		}  
		X509Certificate cert = (X509Certificate) keyEntry.getCertificate();  

		// Create the KeyInfo containing the X509Data.
		KeyInfoFactory kif = fac.getKeyInfoFactory();
		List<X509Certificate> x509Content = new ArrayList<X509Certificate>();
		// x509Content.add(cert.getSubjectX500Principal().getName());

		x509Content.add(cert);
		X509Data xd = kif.newX509Data(x509Content);
		KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));

		// Instantiate the document to be signed.
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		dbf.setNamespaceAware(true);
		Document doc = dbf.newDocumentBuilder().parse(new StringBufferInputStream(xml));
		
		Reference ref = fac.newReference("#" + id, fac.newDigestMethod(DigestMethod.SHA1, null), transformList, null, null);
		// Create the SignedInfo.
		SignedInfo si = fac
		.newSignedInfo(fac.newCanonicalizationMethod(
				CanonicalizationMethod.INCLUSIVE,
				(C14NMethodParameterSpec) null), fac
				.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
				Collections.singletonList(ref)); 
	    
		
		// Create the XMLSignature, but don't sign it yet.
		XMLSignature signature = fac.newXMLSignature(si, ki);

		// Create a DOMSignContext and specify the RSA PrivateKey and
		// location of the resulting XMLSignature's parent element.
		DOMSignContext dsc = new DOMSignContext(keyEntry.getPrivateKey(), doc.getDocumentElement());
					
		// Marshal, generate, and sign the enveloped signature.
		signature.sign(dsc);

		// Output the resulting document.
		//OutputStream os = new FileOutputStream(caminhoXmlNovo);
		StringWriter sw = new StringWriter();
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer trans = tf.newTransformer();
		trans.transform(new DOMSource(doc), new StreamResult(sw));

		// Find Signature element.
		NodeList nl = doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");

		if (nl.getLength() == 0) {
			throw new NFEException("Cannot find Signature element");
		}
		// Create a DOMValidateContext and specify a KeySelector and document
		// context.
		DOMValidateContext valContext = new DOMValidateContext( new X509KeySelector(ks), nl.item(0));
		// Unmarshal the XMLSignature.
		XMLSignature signatures = fac.unmarshalXMLSignature(valContext);
		// Validate the XMLSignature.
		boolean coreValidity = signatures.validate(valContext);
		// Check core validation status.
		if (coreValidity == false)
			throw new Exception("Assinatura inválida.");

		String retorno = sw.toString();
		
		if (tipo != 1)
			validaXML(retorno, xsd);
		
		System.out.println("XML assinado: " + retorno);
		return retorno;
	
	} catch (Exception e) {
		e.printStackTrace();
		throw new NFEException(e.getMessage());
	}
	
}[/code]

Tire o Comentario e me passe o Resultado da Linha

46       //System.out.println(id); 

E em debug veja se passa da linha:

127            signature.sign(dsc);  

E nos Passe os Erros!

Na linha:

46       //System.out.println(id); 

Retorna a tag Id correta

E o erro é justamente na linha: 127 signature.sign(dsc);

Não passa dela, ao executar o servidor e efetuar a chamada o erro é apresentado nesta linha.

[quote=samuk]
E nos Passe os Erros![/quote]

Retorno do println:

Erro apresentado ao chamar o servidor:

Cara. Tudo Perfeito mesmo. Muito estranho… Pega meu cod, adpte ele no seu contexto e teste! Se quiser manter seu codigo, vá substituindo linha por linha!
Se quiser resolver troca tudo…
Ao meu ver, só essa parte é relevante a este erro! Aguardo retorno.

[code]private void assinarNFe(String tipo ,XMLSignatureFactory fac, ArrayList transformList, PrivateKey privateKey, KeyInfo ki, Document document, int indexNFe) throws Exception {
if (EVENTO.equals(tipo)) {
elements = document.getElementsByTagName(“infEvento”);
}else{
elements = document.getElementsByTagName(“infNFe”);
}
org.w3c.dom.Element el = (org.w3c.dom.Element) elements.item(indexNFe);
String id = el.getAttribute(“Id”);

	el.setIdAttribute("Id", true);

	Reference ref = fac.newReference("#" + id, fac.newDigestMethod(DigestMethod.SHA1, null), transformList, null, null);

	SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
			Collections.singletonList(ref));

	XMLSignature signature = fac.newXMLSignature(si, ki);

	DOMSignContext dsc = new DOMSignContext(privateKey, document.getDocumentElement().getElementsByTagName(tipo).item(indexNFe));
	
	dsc.setBaseURI("ok");
	
	signature.sign(dsc);
}[/code]

Essa foi a unica diferença que apresenta do seu código para o meu em relação a seu comentário.

O restante do meu código creio que no seu faça antes da chamada do método assinar. Porem essa alteração também não surtiu efeito.

Segue versão que estou utilizando do java: [quote]java version “1.7.0_25”
Java™ SE Runtime Environment (build 1.7.0_25-b17)
Java HotSpot™ Client VM (build 23.25-b01, mixed mode, sharing)[/quote]

Segue código alterado

[code]public String assinar(int tipo, String xml) throws NFEException {
java.lang.System.setProperty(“org.jcp.xml.dsig.secureValidation”, “false”);
// tipo
// ‘1’ - NFE
// ‘2’ - CANCELAMENTO
// ‘3’ - INUTILIZACAO
// ‘4’ - EVENTO / Carta de correção eletrônica
// ‘5’ - EVENTO / Manifestação do Destinatário
// ‘6’ - EVENTO / Download da NFe
// ‘7’ - EVENTO / Consulta da NFe
String tag = “”;
String xsd = “”;
if(tipo == 1) {
tag = “infNFe”;
//xsd = xsdEnvNFe; //só é feita a validação do lote
} else if (tipo == 2 || tipo == 4 || tipo == 5 || tipo == 6 || tipo == 7) {
tag = “infEvento”;
if(tipo == 2){
xsd = xsdCancNFe;
}else if(tipo == 4){
xsd = xsdEnvCCe;
}else if(tipo == 5){
xsd = xsdManDest;
}
} else if (tipo == 3) {
tag = “infInut”;
xsd = xsdInutNFe;
}
try {

		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setNamespaceAware(false);
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document docs = builder.parse(new StringBufferInputStream(xml));
		
		// Obtem elemento do documento a ser assinado, será criado uma
		// REFERENCE para o mesmo
		NodeList elements = docs.getElementsByTagName(tag);
		Element el = (Element) elements.item(0);
		String id = el.getAttribute("Id");
		//System.out.println(id);
		el.setIdAttribute("Id", true);
		
		// Create a DOM XMLSignatureFactory that will be used to
		// generate the enveloped signature.
		String providerName = System.getProperty(PROVIDER_NAME, PROVIDER_CLASS_NAME);
		XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", (Provider) Class.forName(providerName).newInstance());
		//XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI());
		
		// Create a Reference to the enveloped document (in this case,
		// you are signing the whole document, so a URI of "" signifies
		// that, and also specify the SHA1 digest algorithm and
		// the ENVELOPED Transform.
		ArrayList<Transform> transformList = new ArrayList<Transform>();
		TransformParameterSpec tps = null;
		Transform envelopedTransform = fac.newTransform(Transform.ENVELOPED,tps);
		Transform c14NTransform = fac.newTransform(C14N_TRANSFORM_METHOD, tps);
		transformList.add(envelopedTransform);
		transformList.add(c14NTransform);

		Reference ref = fac.newReference("#" + id, fac.newDigestMethod(DigestMethod.SHA1, null), transformList, null, null);
		// Create the SignedInfo.
		SignedInfo si = fac
		.newSignedInfo(fac.newCanonicalizationMethod(
				CanonicalizationMethod.INCLUSIVE,
				(C14NMethodParameterSpec) null), fac
				.newSignatureMethod(SignatureMethod.RSA_SHA1, null),
				Collections.singletonList(ref));

		// Load the KeyStore and get the signing key and certificate.  
		KeyStore ks = null;
		if (certTipo.equals("PKCS11")) { //A3  
			Provider p = new sun.security.pkcs11.SunPKCS11(parametros.getProperty("nfe.certificado.token"));  
			Security.addProvider(p);  
			ks = KeyStore.getInstance("PKCS11");  
			ks.load(null, parametros.getProperty("nfe.certificado.pass").toCharArray());  
		} else { //A1
			System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");  
			Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());  
			ks = KeyStore.getInstance("PKCS12");  
			ks.load(
					new FileInputStream(parametros.getProperty("nfe.certificado.pfx")),
					parametros.getProperty("nfe.certificado.pass").toCharArray()
			);  
		}

		KeyStore.PrivateKeyEntry keyEntry = null;  
		Enumeration<String> aliasesEnum = ks.aliases();  
		while (aliasesEnum.hasMoreElements())   
		{  
			String alias = (String) aliasesEnum.nextElement();  
			if (ks.isKeyEntry(alias))   
			{  
				keyEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, new KeyStore.PasswordProtection(parametros.getProperty("nfe.certificado.pass").toCharArray()));
				break;
			}  
		}  
		X509Certificate cert = (X509Certificate) keyEntry.getCertificate();  

		// Create the KeyInfo containing the X509Data.
		KeyInfoFactory kif = fac.getKeyInfoFactory();
		List<X509Certificate> x509Content = new ArrayList<X509Certificate>();
		// x509Content.add(cert.getSubjectX500Principal().getName());

		x509Content.add(cert);
		X509Data xd = kif.newX509Data(x509Content);
		KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));

		// Instantiate the document to be signed.
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		dbf.setNamespaceAware(true);
		Document doc = dbf.newDocumentBuilder().parse(new StringBufferInputStream(xml));
		
		// Create a DOMSignContext and specify the RSA PrivateKey and
		// location of the resulting XMLSignature's parent element.
		/**DOMSignContext dsc = new DOMSignContext(keyEntry.getPrivateKey(), doc.getDocumentElement());**/
		DOMSignContext dsc = new DOMSignContext(keyEntry.getPrivateKey(), 
				doc.getDocumentElement().getElementsByTagName(tag).item(0));
		dsc.setBaseURI("ok");

		// Create the XMLSignature, but don't sign it yet.
		XMLSignature signature = fac.newXMLSignature(si, ki);

		// Marshal, generate, and sign the enveloped signature.
		signature.sign(dsc);

		// Output the resulting document.
		//OutputStream os = new FileOutputStream(caminhoXmlNovo);
		StringWriter sw = new StringWriter();
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer trans = tf.newTransformer();
		trans.transform(new DOMSource(doc), new StreamResult(sw));

		// Find Signature element.
		NodeList nl = doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");

		if (nl.getLength() == 0) {
			throw new NFEException("Cannot find Signature element");
		}
		// Create a DOMValidateContext and specify a KeySelector and document
		// context.
		DOMValidateContext valContext = new DOMValidateContext( new X509KeySelector(ks), nl.item(0));
		// Unmarshal the XMLSignature.
		XMLSignature signatures = fac.unmarshalXMLSignature(valContext);
		// Validate the XMLSignature.
		boolean coreValidity = signatures.validate(valContext);
		// Check core validation status.
		if (coreValidity == false)
			throw new Exception("Assinatura inválida.");

		String retorno = sw.toString();
		
		if (tipo != 1)
			validaXML(retorno, xsd);
		
		System.out.println("XML assinado: " + retorno);
		return retorno;
	
	} catch (Exception e) {
		e.printStackTrace();
		throw new NFEException(e.getMessage());
	}
	
}[/code]

Que isso eim… Estranho d+!
FAz o limpa ai… Desistala tudo refente a java! E instala a ultima versão.
Dai alteranos seu eclipse tbm…

Tentou Instalar em outra maquina?!

//