2010-08-23 1 views
0

나는 백그라운드에서 실행하고 싶은 간단한 서버 응용 프로그램이 있습니다.자바 Runtime.exec 자바 문제를 실행

Runtime.getRuntime().exec("cmd /c start java -jar ..\\server\\server.jar -Dlog4j.configuration=file:src\\test\\resources\\log4j.properties -filename src\\test\\resources\\server.properties"); 

을하지만 그것은 cmd 창을 표시하고 나는 그것을 파괴 드릴 수 없습니다 : 다음 줄은 나를 위해 작동합니다. 그래서 사용하고 싶습니다

Runtime.getRuntime().exec("java -jar ..\\server\\server.jar -Dlog4j.configuration=file:src\\test\\resources\\log4j.properties -filename src\\test\\resources\\scIntegration.properties"); 

그러나 단순히 서버에 연결되지 않습니다. 왜 그런가요?

관련 질문 프로세스를 어떻게 종료합니까? 그것은 "끝나지 않는"서버입니다. 그래서 나는 그것을 죽여야 만합니다. 나는 java 명령 만 실행하면 파괴 될 수 있다고 생각 하겠지만, cmd을 가지고 거기에는 행운이 없습니다.

답변

0
서버는 표준 출력 뭔가를하고 출력하기입니다

와 단축 명령 버전에는 출력 할 곳이 없으므로 일부 데이터를 출력하는 동안 멈추었습니다. 해결 방법은 stdout을 일부 파일로 파이프하는 것입니다.

0

자바 프로그램의 절대 경로를 사용해보세요.

파괴시 : exec()은 파괴 할 수 있어야하는 java.lang.Process를 반환합니다. 그렇지 않은 경우 서버 종료를 위해 콜백 유형을 구현해야합니다 (예 : 종료 명령에 대한 특정 보호 조치를 듣고 있습니다.

당신은 첫 번째 인수가 실행할 수있는 실제 명령과 모든 나머지 인 배열로 명령을 분할해야
+0

이미 절대 경로를 사용해 보았습니다. 사용하지 마십시오. 나는 서버에서 아무것도 구현할 수 없다. Process.destroy()의 문제 다. – Trimack

2

인수와 같은 명령은 다음과 같습니다

Runtime.getRuntime().exec(new String[] {"/usr/bin/java", "-jar", "..\\server\\server.jar" ...}); 
+0

나는 같은 결과로 그것을 시도했다. ( – Trimack