Olá,
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?!
Já tentei de várias maneiras. A última foi:
String aux = dataFolder.replace("/", "\\") + nome.replace("/", "\\");
Runtime.getRuntime().exec("cmd start /c "+ aux);
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.
[quote=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.[/quote]
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:
@echo OFF
echo Criando o banco de dados [AGUARDE]...
cd "D:\Users\Wellington\AppData\Roaming\WOPizzariasTemp"
echo Inserindo dados [AGUARDE]
"C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysql" -uroot -p123 < 1-scriptSQL.sql
echo Configurando dados [AGUARDE]...
"C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysql" -uroot -p123 wopizzarias < 2-insertsSQL.sql
echo Finalizando [AGUARDE]...
"C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysql" -uroot -p123 < 3-configSQL.sql
echo CRIACAO DE BASE CONCLUIDA! [FIM]...
pause