Estou há um bom tempo aqui tentando resolver um problema e não consigo.
Minha aplicação gera um arquivo .bat que faz umas inserções em um banco de dados.
Quando eu dou dois cliques no arquito .bat ele executa tudo certinho e não dá nenhum erro, mas quando eu executo pelo java ele dá um monte de erros de arquivos não encontrados.
Alguém poderia me ajudar?!
Por que você não faz as inserções diretamente pelo java?
Para que seu .bat funcione, é necessário configurar o ambiente dele. Ou seja, dizer a partir de que diretório ele vai rodar (por padrão é o da sua aplicação java, não o da pasta que ele esta, como o cmd faz), o que estará no path, etc.
Para isso, use a classe ProcessBuilder no lugar do Runtime.exec.
W
wellingtonfoz
ViniGodoy:
Por que você não faz as inserções diretamente pelo java?
Para que seu .bat funcione, é necessário configurar o ambiente dele. Ou seja, dizer a partir de que diretório ele vai rodar (por padrão é o da sua aplicação java, não o da pasta que ele esta, como o cmd faz), o que estará no path, etc.
Para isso, use a classe ProcessBuilder no lugar do Runtime.exec.
Não faço inserções pelo java porque na verdade é um .bat para criar a base de dados.
Já acrescentei o comando cd … para abrir o diretório onde está o arquivo para executar os comandos corretamente. Funciona normal quando estou executando pelo Eclipse, mas se eu gerar o .jar e rodar, dá os erros de arquivos não econtrados.
O código do .bat ta assim:
@echoOFFechoCriandoobancodedados[AGUARDE]...cd"D:\Users\Wellington\AppData\Roaming\WOPizzariasTemp"echoInserindodados[AGUARDE]"C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysql"-uroot-p123<1-scriptSQL.sqlechoConfigurandodados[AGUARDE]..."C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysql"-uroot-p123wopizzarias<2-insertsSQL.sqlechoFinalizando[AGUARDE]..."C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysql"-uroot-p123<3-configSQL.sqlechoCRIACAODEBASECONCLUIDA![FIM]...pause