Nfe - Erro ao roda o aplicativo


Olá boa noite!
Estou fazendo um teste para verificar o Status da Nfe,
ao rodar o program me gera o seguite erro
Fiz a instalacao dos Jar, mas mesmo assim continua o erro.

Será q fiz certo ?

Abaixo msg de erro e codig fonte e imagem da config. em anexo.

a quem responder desde já meus agradecimentos.

ANT.CARLOS/SP


MENSAGEM DE ERRO

log4j:WARN No appenders could be found for logger (org.apache.axiom.om.util.StAXUtils).
log4j:WARN Please initialize the log4j system properly.
org.apache.axis2.AxisFault: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:438)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:196)
at br.com.javac.nfe.NFeConsultaStatusServico.main(NFeConsultaStatusServico.java:87)
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:179)
at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:186)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:116)
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:130)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:560)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
… 9 more
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
at java.security.Provider$Service.newInstance(Provider.java:1245)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:147)
at javax.net.ssl.SSLContext.getInstance(SSLContext.java:125)
at javax.net.ssl.SSLContext.getDefault(SSLContext.java:68)
at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:112)
… 18 more
Caused by: java.security.PrivilegedActionException: java.io.FileNotFoundException: C:\JavaC\NF-e\certificado.pfx (O sistema não pode encontrar o caminho especificado)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:120)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.(DefaultSSLContextImpl.java:40)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at java.security.Provider$Service.newInstance(Provider.java:1221)
… 28 more
Caused by: java.io.FileNotFoundException: C:\JavaC\NF-e\certificado.pfx (O sistema não pode encontrar o caminho especificado)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.(FileInputStream.java:106)
at java.io.FileInputStream.(FileInputStream.java:66)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl$2.run(DefaultSSLContextImpl.java:123)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl$2.run(DefaultSSLContextImpl.java:121)
… 38 more
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)


ABAIXO O FONTE DP PROGRAMA

package br.com.javac.nfe;

import br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub;
import java.net.URL;
import java.security.Security;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.util.AXIOMUtil;

/**
*

  • @author JavaC - Java Community
    */
    public class NFeConsultaStatusServico {

    public static void main(String[] args) {
    try {
    /**
    * 1) codigoDoEstado = Código do Estado conforme tabela IBGE.
    *
    * 2) url = Endereço do WebService para cada Estado.
    * Ver relação dos endereços em:
    * Para Homologação: http://hom.nfe.fazenda.gov.br/PORTAL/WebServices.aspx
    * Para Produção: http://www.nfe.fazenda.gov.br/portal/WebServices.aspx
    *
    * 3) caminhoDoCertificadoDoCliente = Caminho do Certificado do Cliente (A1).
    *
    * 4) senhaDoCertificadoDoCliente = Senha do Certificado A1 do Cliente.
    *
    * 5) arquivoCacertsGeradoParaCadaEstado = Arquivo com os Certificados necessarios para
    * acessar o WebService. Pode ser gerado com a Classe NFeBuildCacerts.
    /
    String codigoDoEstado = “35”; /
    …SAO PAULO */
    URL url = new URL(“https://homologacao.nfe.sefazvirtual.sp.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx”);
    String caminhoDoCertificadoDoCliente = “C:/JavaC/NF-e/certificado.pfx”;
    String senhaDoCertificadoDoCliente = “12345”;
    String arquivoCacertsGeradoParaCadaEstado = “C:/JavaC/NF-e/nfe-cacerts”;

         /**
          * Informações do Certificado Digital.
          */
         System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
         Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
    
         System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
    
         System.clearProperty("javax.net.ssl.keyStore");
         System.clearProperty("javax.net.ssl.keyStorePassword");
         System.clearProperty("javax.net.ssl.trustStore");
    
         System.setProperty("javax.net.ssl.keyStore", caminhoDoCertificadoDoCliente);
         System.setProperty("javax.net.ssl.keyStorePassword", senhaDoCertificadoDoCliente);
    
         System.setProperty("javax.net.ssl.trustStoreType", "JKS");
         System.setProperty("javax.net.ssl.trustStore", arquivoCacertsGeradoParaCadaEstado);
    
         /**
          * Xml de Consulta.
          */
         StringBuilder xml = new StringBuilder();
         xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
             .append("<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
             .append("<tpAmb>2</tpAmb>")
             .append("<cUF>")
             .append(codigoDoEstado)
             .append("</cUF>")
             .append("<xServ>STATUS</xServ>")
             .append("</consStatServ>");
    
         OMElement ome = AXIOMUtil.stringToOM(xml.toString());
         NfeStatusServico2Stub.NfeDadosMsg dadosMsg = new NfeStatusServico2Stub.NfeDadosMsg();
         dadosMsg.setExtraElement(ome);
    
         NfeStatusServico2Stub.NfeCabecMsg nfeCabecMsg = new NfeStatusServico2Stub.NfeCabecMsg();
         /**
          * Código do Estado.
          */
         nfeCabecMsg.setCUF(codigoDoEstado);
    
         /**
          * Versao do XML
          */
         nfeCabecMsg.setVersaoDados("2.00");
         NfeStatusServico2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeStatusServico2Stub.NfeCabecMsgE();
         nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);
    
         NfeStatusServico2Stub stub = new NfeStatusServico2Stub(url.toString());
         NfeStatusServico2Stub.NfeStatusServicoNF2Result result = stub.nfeStatusServicoNF2(dadosMsg, nfeCabecMsgE);
    
         System.out.println(result.getExtraElement().toString());
     } catch (Exception e) {
         e.printStackTrace();
     }
    

    }

}




A mensagem de erro está acusando a falta de um arquivo:[quote]Caused by: java.security.PrivilegedActionException: java.io.FileNotFoundException: C:\JavaC\NF-e\certificado.pfx (O sistema não pode encontrar o caminho especificado) [/quote]

na verdade este erro é genérico, pode ser que o arquivo.pfx não exista, esteja com nome errado(case sensitive), pode ser o envelope soap mal formado, mas se estiver tudo correto incluindo o truststore(cacerts) é porque falta a seguinte propriedade nas informações do certificado digital:

/**
* Informações do Certificado Digital.
*/

System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");

System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());