자바 프로그래밍 : 자바에서 exe 호출 및 매개 변수 전달


87

Java에서 exe를 호출하고 특정 매개 변수를 전달하는 메커니즘을 찾고 있습니다. 어떻게 할 수 있습니까?

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);
}

이전 코드가 작동합니다. 그러나 매개 변수를 전달할 수 없습니다 . MyExe.exe는 매개 변수를 허용합니다. 다른 문제는 PathToExe에 공백이있는 경우입니다. ProcessBuilder가 작동하지 않는 것 같습니다. 예를 들면 :

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

감사합니다.


1
new ProcessBuilder ( "C : \\ PathToExe \\ MyExe.exe", "param1", "param2"). start ();
Prince John Wesley


1
new ProcessBuilder("C:\\PathToExe\\MyExe.exe","param1","param2").start();이 코드 조각이 옵션 인수에 유용합니까? 예를 들어 -h는 도움을 의미합니다.
Lorenzo B

공백이있는 경로는 어떻습니까? 다시 감사합니다. 매우 유용합니다 !!
Lorenzo B

3
@Flex : 인수는 인수입니다. 인수 의 의미 는 전적으로 실행중인 프로그램에 달려 있습니다. 한 프로그램은 -h옵션으로 해석 되고 다른 프로그램은 파일 이름으로 해석 될 수 있습니다. ProcessBuilder알지도 관심도 없습니다. 공백이있는 경로 재 지정 : 이는 인수가 명령 줄 및 일부 열악한 API에서와 같이 공백으로 구분 된 목록이 아닌 개별 문자열로 제공되는 이유 중 하나입니다. abandon과 함께 거기에 공백을 던지면 전체 프로그램 경로가 OS에 제공되어 적절하게 처리됩니다.
TJ Crowder 2011

답변:




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
인수를 어디에 넣을까요?
Mert Serimer

1
@ Shikha 질문을 통해 가십시오
Anand j. Kadhi

0

exe가 일부 dll 또는 특정 종속성에 의존하는 경우 아래에서 작동하며 디렉토리 경로를 설정해야합니다. 아래에서 언급했듯이 exePath는 exe가 참조 파일과 함께 배치 된 폴더를 의미합니다.

임의의 임시 파일을 생성하는 Exe 응용 프로그램이므로 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();
} 

**

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.