2014-10-31 2 views
3

큰 Java 앱에서 외부 프로그램을 실행해야하는 경우가 있습니다. 나는 이것을 아주 쉽게 할 수있다. Runtime.getRuntime(). exec ("app name");자바에서 외부 앱 실행 - VM에 연결 안 함

문제는 실행 된 응용 프로그램이 Java 응용 프로그램이 종료 될 때 종료되므로 내 Java 프로세스에 묶여있는 것처럼 보입니다. 다른 앱을 계속 실행하고 싶습니다.

편집 : 위의 설명과 실수를 수정하십시오. 실행 된 앱이 종료되지 않습니다.

문제는 원래 앱이 종료 된 후에 시작한 앱이 종료 될 때까지 다시 시작할 수 없다는 것입니다. 기존 App (및 출시 된 응용 프로그램)은 Launch4J 생성 .exe입니다.

그래서 출시 된 앱이 원래 앱을 완전히 종료하지 못하도록 할 수 있습니까?

(원본 응용 프로그램은 64 비트 JVM에서 실행되는 동안 아, 그리고 단지에 다른 monkeywrench을 던져는 시작 응용 프로그램은 32 비트 JVM을 사용합니다.) 작업을해야

답변

0

한 가지 방법은 쉘을 실행하는 것입니다 독립 프로세스로 프로그램을 시작하는 명령.

은 리눅스에 예를 들어 (this answer 기준) :

Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", "nohup app_name &"}); 

는 Windows에서 :

Runtime.getRuntime().exec(new String[] {"cmd.exe", "/c", "start app_name"}); 
2

쉘 명령 트릭은 내가 쉬운 방법을 찾았어요, 일 수도 있지만.

Desktop.getDesktop(). open ("app name");

분명히 원래 프로그램에 묶이지 않는 방식으로 앱을 시작합니다.

+0

그리고 이것은 시스템 특정되지 않는 주요 장점이 있습니다. –