Runtime nao executa

8 respostas
K
public void executarExterno() {
		try {
			Runtime executarComando = Runtime.getRuntime();
			executarComando.exec("mysqldump -u root kayo > /home/kayo/backupkayo.sql");
			System.out.println(executarComando.toString());
	} catch (Exception erro) {
		System.out.println(erro.toString());
	}
	}

o retorno deo sysout é: java.lang.Runtime@1571886

mas o mysqldump nao gera o backup!

8 Respostas

dreamspeaker

Ao invés de erro.toString tente erro.printStacktrace()

Talvez a mensagem seja mais clara.

K

System.out.println(erro.printStackTrace());

indica um erro em println, tentei print mas continua indicando erro.

T

executarComando.exec("mysqldump -u root kayo > /home/kayo/backupkayo.sql");

O sinal de ">" é um comando que é interpretado pelo shell (ou seja, pelo /bin/bash ou pelo /bin/sh - depende do seu Unix/Linux).

Veja se o "mysqldump" tem uma opção de jogar a saída em um arquivo (sei lá, algo como "-out"), em vez de usar o ">".

Outra opção é usar /bin/sh -c:

executarComando.exec ("/bin/sh -c \"mysqldump -u root kayo > /home/kayo/backupkayo.sql\"");
dudaskank

KolT:
System.out.println(erro.printStackTrace());

indica um erro em println, tentei print mas continua indicando erro.

na verdade, é porque é só erro.printStackTrace(); mesmo, ele já manda pra saída padrão pra vc :slight_smile:

K

não tem e eu troquei a forma pra
executarComando.exec ("/bin/sh -c “mysqldump -u root kayo > /home/kayo/backupkayo.sql”");

mas deu na mesma. uma coisa interessante é que usando mysqldump -u root -p

Enter password:

aparece na shell que eu rodei o eclipse o pedido da senha, sendo que não possuo senha, então por isso que eu tirei o -p, ou seja da sinal de vida…

erro.printStackTrace(); -> java.lang.Runtime@1571886

T

Hum, quando você usa “exec”, deve fornecer tudo que é necessário para a tal aplicação rodar. Se ele tenta usar a entrada-padrão para pedir a senha, você tem de obter um redirecionamento: o Java não vai lhe dar um “prompt” para obter a senha.

Se puder, passe a senha na linha de comando.

K

ai que esta, nao tem senha… digitando o comando que to tentando fazer o Java executar o ‘backup’ é gerado sem problema, mas na linha de codigo não… como poderia fazer para usar -p e indicar a senha? que nao tem senha alias, so ‘precionar o enter’ ?

jcatino

Em que diretório vc executa o “java -cp CLASSPATH classe…” ? Se vc executa ele agendado, faça-o desde uma bat que vá para o diretório onde esteja o executável.

Outra forma seria setar o PATH com o caminho do executável que quer rodar, para que seja executado desde qualquer diretório.

Se precisar variáveis setadas, vc precisar montar o ambiente também.

Criado 1 de agosto de 2006
Ultima resposta 1 de ago. de 2006
Respostas 8
Participantes 5