Programação Java: chame um exe de Java e passe parâmetros


87

Estou descobrindo um mecanismo para chamar um exe de Java e passar parâmetros específicos. Como eu posso fazer?

Process process = new ProcessBuilder("C:\\PathToExe\\MyExe.exe").start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

System.out.printf("Output of running %s is:", Arrays.toString(args));

while ((line = br.readLine()) != null) {
  System.out.println(line);
}

O código anterior funciona. Mas não consigo passar parâmetros . MyExe.exe aceita parâmetros. Um outro problema é quando PathToExe tem espaços em branco. O ProcessBuilder parece não funcionar. Por exemplo:

C:\\User\\My applications\\MyExe.exe

Obrigado.


1
novo ProcessBuilder ("C: \\ PathToExe \\ MyExe.exe", "param1", "param2"). start ();
Príncipe John Wesley,


1
new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();Este snippet é valioso para argumentos de opção? Por exemplo -h que significa ajuda e assim por diante ..
Lorenzo B

e caminhos com espaços em branco? Obrigado novamente. Muito útil !!
Lorenzo B,

3
@Flex: Um argumento é um argumento. O significado do argumento depende inteiramente do programa que está sendo executado. Um programa pode interpretar -hcomo uma opção, outro pode interpretar como um nome de arquivo. ProcessBuildernem sabe nem se importa. Re caminhos com espaços: esse é um dos motivos pelos quais os argumentos são fornecidos como strings discretas em vez de (digamos) uma lista delimitada por espaço como na linha de comando e em algumas APIs deficientes. Jogue espaços lá com abandono, todo o caminho do programa será fornecido ao sistema operacional para tratar conforme apropriado.
TJ Crowder,

Respostas:




0
import java.io.IOException;
import java.lang.ProcessBuilder;

public class handlingexe {
    public static void main(String[] args) throws IOException {
        ProcessBuilder p = new ProcessBuilder();
        System.out.println("Started EXE");
        p.command("C:\\Users\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe");   

        p.start();
        System.out.println("Started EXE"); 
    }
}

1
Onde colocar args?
Mert Serimer

1
@Shikha, responda à pergunta
Anand j. Kadhi

0

Abaixo funciona para mim se seu exe depende de alguma dll ou certa dependência, então você precisa definir o caminho do diretório. Como mencionado abaixo, exePath significa pasta onde exe é colocado junto com seus arquivos de referência.

Aplicação Exe criando qualquer arquivo temporaray para que crie na pasta menção em processBuilder.directory (...)

**

ProcessBuilder processBuilder = new ProcessBuilder(arguments);
processBuilder.redirectOutput(Redirect.PIPE);
processBuilder.directory(new File(exePath));
process = processBuilder.start();
int waitFlag = process.waitFor();// Wait to finish application execution.
if (waitFlag == 0) {
...
 int returnVal = process.exitValue();
} 

**

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.