Exec de Runtime

7 respostas
G

Pessoal estou tentando executar um backup do mysql através de comando com java, mas não estou conseguindo, estou utilizando Windows XP:

segue o codigo:

String comando = "mysqldump -u root --password= --database banco > banco.sql";	
Runtime.getRuntime().exec(new String[]{comando}, new String[]{}, new File("C:\\Arquivos de programas\\MySQL\\mysql-5.1.35-win32\\bin\\"));

Já tentei de varias formas, algumas não geram erro nenhum, mas não gera o arquivo, essa forma que postei printa esse erro:

Cannot run program "mysqldump -u root --password= --database banco > banco.sql" (in directory "C:\Arquivos de programas\MySQL\mysql-5.1.35-win32\bin"): CreateProcess error=2, O sistema não pode encontrar o arquivo especificado
	at java.lang.ProcessBuilder.start(Unknown Source)

7 Respostas

T

Experimente isto aqui.

Runtime.getRuntime().exec (
    "cmd.exe", new String[]{
        "/c",
       "mysqldump -u root --password= --database banco > banco.sql"
    },
    new File("C:\\Arquivos de programas\\MySQL\\mysql-5.1.35-win32\\bin")
);
G

nada, rodou sem erros, mas não rodou o mysqldump, o estranho é que não estou conseguindo nem executar o simulador do dos.

Runtime.getRuntime().exec("cmd");

Runtime.getRuntime().exec("cmd.exe");

no comando executar do windows funciona direitinho, mas com Runtime não.

F

Desculpe invadir seu tópico sem uma solução, mas também estou necessitando de uma ajuda para executar comandos DOS em uma aplicação Java. Usei o código que o thingol passou, da seguinte forma:

try{ Runtime.getRuntime().exec ( "cmd.exe", new String[]{ "/c", "ipconfig /all" }, new File("C:\\WINDOWS\\system32") ); } catch(Exception e){ e.printStackTrace(); }

Mas nada ocorre… nenhuma Exception e nenhum resultado.

Se você conseguir solucionar seu problema, acho que consigo solucionar o meu…

G

nada, não achei nada pra fazer funcionar isso.

T

Falta de eu olhar a documentação direito. Seria:

Runtime.getRuntime().exec (  
     new String[] {
         "cmd.exe", 
         "/c",  
         "mysqldump -u root --password= --database banco > banco.sql"  
     },  
     new String[]{},
     new File("C:\\Arquivos de programas\\MySQL\\mysql-5.1.35-win32\\bin")  
 );
G

Legal, funcionou parcialmente, pelo menos ele esta gerando o arquivo banco.sql, isso significa que rodou o comando, o problema é que o arquivo foi gerado vazio, (sem nada dentro).

Outra duvida, quando executo Runtime.getRuntime().exec(“cmd”); ele não deveria abrir o prompt de comando (a janelinha preta)?

Bom em todo caso vou pesquisar mais sobre o assunto, qualquer coisa posto aqui…

G

Bom o shell apareceu pra mim quando utilizei:

Runtime.getRuntime().exec ("rundll32 SHELL32.DLL,ShellExec_RunDLL cmd.exe");
Criado 24 de agosto de 2009
Ultima resposta 25 de ago. de 2009
Respostas 7
Participantes 3