2012-09-05 5 views
-1

가능한 중복 :
Run Java program into another Program실행 jar 파일

내가 이클립스에서 만든 자바 응용 프로그램에서 jar 파일을 실행 해보십시오. 내가 소스 코드 아래 사용하여 jar 파일을 실행할 때 는

Process process = run.exec("java -jar TestJava.jar"); 
InputStream inError = process.getErrorStream(); 
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inError)); 
System.out.println("Error=" + bufferedReader.readLine()); 
+1

아마도 jar 파일이 다른 폴더에 있습니까? – jdevelop

+1

Arrgh .. 얼마나 많은 중복 된 질문을 조언을 무시할 것입니까? : / –

답변

0

이 프로세스를 실행해야하는 작업 디렉토리를 설정 jarfile가 오류를 액세스 할 수 없습니다 화재. 아래 명령문을 사용하여 작업 디렉토리를 설정하십시오.

Runtime.getRuntime().exec(command, null, new File("path_to_directory")); 
0

먼저 cmd-java에서 jar 명령을 실행하고 TestJava.jar을 실행할 수 있는지 확인하십시오. 그런 다음 코드에서 동일한 명령을 실행 해보십시오.

Runtime runtime = Runtime.getRuntime(); 
Process proc = runtime.exec("java -jar TestJava.jar"); 
System.exit(0); 
0

Java 명령의 전체 경로를 제공해야합니다.

예를 들어, 윈도우에서 당신은 TestJava.jar가에서처럼

1

는 소리 당신의 명령을 실행하려고 할 때 계정에 시스템 경로를하지 않는

C:/Program Files/java/jre/bin/java.exe 

ProcessBuilder & Runtime.exec 뭔가를해야 할 것 다른 디렉토리. Eclipse 내에서이 코드를 실행하는 경우 현재 작업 디렉토리는 Eclipse 프로젝트의 폴더와 동일합니다 (다르게 구성하지 않은 경우 Eclipse의 기본 실행 위치 임). 현재 작업 디렉토리와 관련된 절대 경로 또는 경로를 통해 TestJava.jar 경로를 지정하십시오.

다른 점은주의해야 할 점은 오류 스트림과 생성중인 Process의 출력 스트림을 모두 사용해야한다는 것입니다. Process 인스턴스의 기본 출력/오류 스트림 버퍼 크기는 그다지 크지 않으며 가득 찬 경우 더 많은 버퍼 공간을 위해 무한정 차단해야합니다. 각 스트림을 별도의 Thread에서 사용하는 것이 좋습니다.