2012-07-31 2 views
3

파이썬 컴파일 된 스크립트 (script.pyc, 필자는 .py 파일이 아닙니다)가 내 Windows 명령 프롬프트에서 제대로 작동하며, 자바의 애플리케이션. 내가 런타임() 메소드를 사용하려고 :Python 컴파일 스크립트 (.pyc)를 Java로 실행합니다.

 Runtime runtime = Runtime.getRuntime(); 
    runtime.exec(new String[] {"C:\\toto\\tools\\script.pyc" ,"arg","arg2" }); 

하지만 오류 얻을 :

Exception in thread "main" java.io.IOException: Cannot run program "C:\Nuance\VoCon Hybrid\SDK_v4_3\tools\clctodict.pyc": CreateProcess error=193, %1 n?est pas une application Win32 valid 

내 터미널에서 잘 스크립트 작업 ("인수"는 txt 파일입니다 "를 ARG2은" 출력 이름 및 스크립트는 문제없이 작업을 수행합니다.

나는 또한 getDesktop() 내 스크립트를 실행하려고

:

 File fie = new File("C:\\toto\\tools\\script.pyc" ,"arg","arg2"); 
    Desktop.getDesktop().open(fie); 

아무 문제가 없지만, 내가 인수를 추가 할 수 없습니다, 그래서 불과 몇 초 전에 동안 터미널 창 개방을 볼 수 있습니다 즉시 사라진다. 나는 성공도없이 JPython을 사용하려고 시도했다. (.pyc ???에서 methode "execfile"을 사용할 수 없을 수도있다.)

+0

하는 [ProcessBuilder를] 사용해보십시오 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html) – Zoop

답변

2

을()() 과정과 p.exitValue의 끝을 기다리는 프로그램이 성공적으로 종료되었는지 테스트합니다.

또한 p.getOutputStream를 통해 출력 스트림을 얻을 수있다() 파이썬 스크립트로 인쇄 된 텍스트를 검색 할

자세한 내용은 클래스 문서를 참조하십시오 : (http://docs.oracle.com/javase/6/docs/api/java/lang/Process.html

+0

좋습니다! 그것은 작동합니다! getErrorStream() 및 getInputStream()을 사용하여 실수를 확인하고 수정했습니다 (python 2.7 대신 2.5 => pyc의 나쁜 매직 번호, 나쁜 매개 변수 또는 paramater가 존재하지 않습니다 ...)! – gamerounet

2

.class를 실행하기 위해 jvm이 필요한 것처럼, .pyc를 실행하는 파이썬 인터프리터.

과 같이하십시오 : 당신은 그럼 당신은 p.waitFor를 호출 할 수 있습니다

Process p = Runtime.getRuntime().exec(new String[]{"python.exe" ... other args) 

처럼 뭔가를 할 수

runtime.exec(new String[] {"c:\\Python26\\bin\\python.exe", "C:\\toto\\tools\\script.pyc" ,"arg","arg2" }); 
+0

실제로 더 이상 오류는 없지만 스크립트가 제대로 실행되는지 여부는 알 수 없습니다. 생성 된 파일을 찾을 수 없습니다 (제 경우에는 arg2). 게다가, 그냥 ("파이썬", "스크립트 .pyc")하자면 결과는 같습니다. (args없이 터미널에서 .pyc 스크립트를 실행하면 필요한 param을 알려주는 일종의 "도움말"이 생성됩니다. 인쇄). – gamerounet

관련 문제