2011-01-10 2 views
5

Java 프로그램에서 Python, Ruby, C, C++ 및 Java 스크립트를 실행하려고하는데 스크립트를 실행하는 좋은 방법으로 Processbuilder가 제안되었습니다. 내가 아는 바로는, Processbuilder는 주로 네이티브 파일 (Windows에서 .exe 등)을 실행합니다. 그러나 Processbuilder를 사용하여 스크립트 (기본이 아닌) 파일을 실행하는 것에 대해 몇 가지 이야기를 들었습니다. 불행히도, 주제에서 찾은 모든 것이 엄청나게 모호합니다.processbuilder를 통해 스크립트를 실행 중입니다.

누군가 파이썬, 루비 등과 같은 비영어권 스크립트를 실행할 수있는 방법을 명확히한다면 가장 감사하게 생각합니다.

답변

6

ProcessBuilder documentation over at Sunoracle을 확인할 수 있지만 기본적으로 스크립트 언어에 대한 인터프리터를 실행하고 실행할 스크립트를 전달할 수 있습니다.

예를 들어, 당신이 /home/myuser/py_script.py에 스크립트가 있다고 가정 해 봅시다, 그리고 python/usr/bin/

class ProcessRunner 
{ 
    public static void main(String [] args) 
    { 
     ProcessBuilder pb = new ProcessBuilder("/usr/bin/python", "/home/myuser/py_script.py"); 
     Process p = pb.start(); 
    } 
} 

극히 기본적인 예를 들어, 당신은 작업 디렉토리를 변경와 애호가 얻고 환경을 변경할 수 있습니다.

String 배열 또는 List<String>의 하위 유형을 사용하여 ProcessBuilder을 구성 할 수도 있습니다. 목록의 첫 번째 항목은 실행할 프로그램/실행 파일이어야하며 다음 항목은 모두 프로그램에 대한 인수입니다.

String pbCommand[] = { "/usr/bin/python", "/home/myuser/py_script.py" }; 
ProcessBuilder pb = new ProcessBuilder(pbCommand); 
Process p = pb.start(); 
+0

그것은 작동한다! 고마워요! – Curlystraw

0

것은 수동으로도 휴대 성 문제가 발생할 수있는 스크립트의 전체 위치를 입력하는 것을 방지하기 위해, 여기에 내가 무슨 짓을했는지 :

String pwd = System.getProperty("user.dir"); 

ProcessBuilder pb = new ProcessBuilder("/usr/bin/python", pwd+'/'+scriptName, arg1, arg2); 
Process p = pb.start();