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

2 respostas
U

Galera, estou usando Eclipse 3.1 e tento rodar uma aplicação DOS (mkisofs.exe) que monta uma imagem .ISO a partir de um path escolhido pelo usuário.

Abaixo o trecho onde tento executar o programa mkisofs:

try {
     Runtime.getRuntime().exec("mkisofs -o c:\\imagem.iso -J -r c:\\Temp");
    } catch (IOException e1) {						
        e1.printStackTrace();						
        JOptionPane.showMessageDialog(null,"Erro ao executar MKISOFS","EERRO"),JOptionPane.ERROR_MESSAGE);
    }

o Programa mkisofs está no meu path e a sintaxe está correta, porém quando executo o botão que chama esse procedimento o seguinte erro ocorre:

java.io.IOException: CreateProcess: mkisofs -o c:\iwg2.iso -J -r c:\iwg2 error=2
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(Unknown Source)
	at java.lang.ProcessImpl.start(Unknown Source)
	at java.lang.ProcessBuilder.start(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at java.lang.Runtime.exec(Unknown Source)
	at com.sismed.visao.VisaoArquivamento$1.actionPerformed(VisaoArquivamento.java:207)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Por acaso alguém sabe uma forma alternativa ou a solução para se executar essa linha de comando? gato pela ajuda de todos os que souberem :wink:

2 Respostas

1112

Olá,

Dê uma olhada em http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runtime.html#exec(java.lang.String[]) . Acredito que chamando da seguinte forma daria certo:

String[] cmdarray = new String[]{ "mkisofs", "-o", "c:\\imagem.iso", "-J", "-r", "c:\\Temp" }; Runtime.getRuntime().exec(cmdarray);

L

Procure também pela Classe Process, ela deixa os processos ocultos para o cliente, da para comunicar com o processo e finalizá-lo, ou seja ter total controle.

Criado 22 de maio de 2006
Ultima resposta 22 de mai. de 2006
Respostas 2
Participantes 3