Problema Executar Jar Com Passagem de Parametros

Olá pessoal, sou novo em Java e to apanhando aqui desde cedo!

Bom, é o seguinte: tenho um arquivo .Jar que faz a assinatura de um documento XML. Abaixo parte do código de minha classe:


// imports 

 /*
  * CLASSE SIGN_NEW
  */

public class SignNew {
    
        public static void main(String[] args) throws Exception {
        int i = 0;
            
         
//DECLARAÇÃO / INSTANCIAÇÃO DAS VARIÁVEIS  
        
        String input, certificado, cert_alias, cert_pass, cert_X509; 
        
        input          = "C:/xml/alpa/NFE_gerada/invoice.xml";
        certificado  =   "C:/xml/alpa/NFE_parametros/AlpaPetroleo.pfx";
        cert_alias   =   "AlpaPetroleo";
        cert_pass   =   "a1p2b3j4";
        cert_X509  =   "C:/xml/alpa/NFE_parametros/AlpaPetroleo.cer";
                    
        String providerName = System.getProperty("jsr105Provider", "org.jcp.XML.dsig.internal.dom.XMLDSigRI");
     
//INSTANCIAÇÃO DO DOCUMENT BUILDER FACTORY (DBF)
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        DocumentBuilder builder = dbf.newDocumentBuilder();
        Document doc = builder.parse(new FileInputStream(input));

// NESTA PARTE MEU JAVA FAZ O PROCESSO DA ASSINATURA E FAZ O RETORNO

         
//SETA O ID NA VARIAVEL OUTPUT
         
         String output =   "C:/xml/alpa/NFE_assinada/"+ id+".xml" ;
     
// GERAR DOCUMENTO / FAZER OUTPUT EM DISCO
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer trans = tf.newTransformer();
        trans.transform(new DOMSource(doc), new StreamResult (new FileOutputStream(output)));
               
       }
          
  }

No caso, minhas variaveis estão todas instanciadas, e quando executo meu meu Jar ele lê o arquivo input definido no java, faz o que tem que fazer, retorna o output, gravando o arquivo em disco! até aí tudo beleza!

o problema é que vou utilizar um arquivo batch (.bat) para chamar meu arquivo jar, e gostaria de passar a variavel “input”, pois a cada chamada neste arquivo, terei um nome de imput diferente, não podendo este ser fixo.

meu arquivo batch:

@echo on
java -jar “C:\xml\alpa\NFE_parametros\nfe.jar” “C:\xml\alpa\NFE_gerada\invoiceXYZ.xml”

onde o C:\xml\alpa\NFE_gerada\invoiceXYZ.xml é o arquivo de imput que quero passar para o .Jar

Minhas dúvidas:

  1. Tenho que mudar algo no meu código para passar apenas a variavel “input”?

  2. Ao fazer a chamada no batch, posso passar somente o input ou tenho que passar demais variaveis? Alguem poderia me dar um exemplo?

any help are welcome!

obrigado,

Rafael

Você já ouviu falar de parâmetros em batch files?
%1 %2 %3 etc.
O que você tem de alterar é só pegar os valores de args[0], args[1] etc.

Thiago,

num entendi direito! preciso somente passar os parametros no meu batch? num preciso alterar nada no meu java?

obrigado pela ajuda!

Rafael

Tá bom, você tem de mudar, é claro:
Original

#         String input, certificado, cert_alias, cert_pass, cert_X509;   
#           
#         input          = "C:/xml/alpa/NFE_gerada/invoice.xml";  
#         certificado  =   "C:/xml/alpa/NFE_parametros/AlpaPetroleo.pfx";  
#         cert_alias   =   "AlpaPetroleo";  
#         cert_pass   =   "a1p2b3j4";  
#         cert_X509  =   "C:/xml/alpa/NFE_parametros/AlpaPetroleo.cer";  

Final:

String input, certificado, cert_alias, cert_pass, cert_X509;   
if (args.length != 5) 
    ... erro
else {
input          = args[0];
certificado  =   args[1];
cert_alias   =   args[2];
cert_pass   =   args[3];
cert_X509  =   args[4];  
}

E acho que você sabe o que é “args”, afinal você sabe algo que é infinitamente mais complexo, que é essa parte de assinatura digital.

Thiago,

obrigado pela ajuda cara! não sabia que podia instanciar a variável com args [ n ].

Testei aqui e deu certinho! Essa coisa de assinatura é meio complexa mesmo, mais só saiu porque sou muito persistente, pq minha praia num é java não!

vlw msmo!

Rafael