2013-01-06 1 views
0

새 터미널 창을 열고 java 코드로 내 프로그램을 실행하고 싶습니다. 그래서 사용터미널 창을 열고 java에서 고객 프로그램을 실행하는 방법

Runtime.getRuntime().exec("gnome-terminal -x /path/to/my/program arg1 arg2"); 

이 우분투에서 잘 작동하지만, 불행히도에 CentOS에서 작동하지 않는 문제는 터미널 창을 즉시 폐쇄한다는 것이다.

stackoverflow에서 많은 시간을 검색했지만 해결책을 찾을 수 없습니다. 대단히 감사합니다 !!!

+0

어떤 터미널 에뮬레이터/데스크톱 환경에서 이것을 사용 하시겠습니까? – Tawnos

+3

새로운 대안 인 ProcessBuilder는 exec의 취성의 일부를 다룹니다. –

+3

1) [Runtime.exec()이 실행되지 않을 때]에 설명 된 것처럼 새 프로세스를 만들 때 자주 범하는 실수가 있습니다. (http://www.javaworld.com/javaworld/jw-12-2000/jw-1229- traps.html). 이 기사는 프로세스가 실패했는지 확인하는 * 첫 번째 방법입니다. * 모든 * 팁을 구현하십시오. 그렇게해도 프로세스가 작동하지 않더라도 실패한 이유에 대해 훨씬 자세한 정보가 제공됩니다. 2) ProcessBuilder를 사용하여 프로세스를 생성하십시오. 3) 더 신뢰할 수있는 결과를 얻으려면'String' 기반 인수를'String []'으로 만드십시오. –

답변

0

여러분 모두에게 감사드립니다. CentOS에 프로그램을 복사 할 때 실행 권한이 누락되어서 터미널에서 실행 권한을 잃어버린 다음 문제를 해결할 수없는 문제를 발견했습니다.

0
try{ 
    Process pr =new ProcessBuilder("gnome-terminal", "-e", "pathToScript/script.sh").start(); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    }