java 利用Runtime.getRuntime().exec()調用python腳本
1、將寫好的py腳本放置在Java工程的根目錄下,方便管理和引用,當然也可以存放在本地;
2、編寫python腳本,以最經典常見的代碼爲例:
import sys
import urllib
print "hello" #打印“hello”
print sys.path #打印python的安裝路徑
3、編寫class文件,代碼如下:
package python;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class test {
public static void main(String[] args){
try{
System.out.println("start"); //控制檯打印"start"
Process pr = Runtime.getRuntime().exec("python jtpython.py"); //此行代碼爲核心,調用py腳本
BufferedReader in = new BufferedReader(new
InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
pr.waitFor();
System.out.println("end"); //控制檯打印"end"
} catch (Exception e){
e.printStackTrace();
}
}
}
4、測試
一般地,完成前三步即可成功實現 java 調用python腳本,但是 有時候會顯示以下錯誤:
open java.io.IOException: Cannot run program "python": CreateProcess error=2, 系統找不到指定的文件。at
java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)at java.lang.Runtime.exec(Runtime.java:620) at java.lang.Runtime.exec(Runtime.java:450)at java.lang.Runtime.exec(Runtime.java:347)
at python.test.main(test.java:13) Caused by: java.io.IOException: CreateProcess error=2, 系統找不到指定的文件。at java.lang.ProcessImpl.create(Native Method)at
java.lang.ProcessImpl.<init>(ProcessImpl.java:386)at java.lang.ProcessImpl.start(ProcessImpl.java:137)at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)...
4 more
解決方法:(配置Run Configuration中的Enviroment,增加PATH變量,請注意:名字必須是PATH!!!)
具體步驟:1)Run-Run Configurations...-Environment-New,Name設置爲:PATH,Value設置爲:python的安裝路
徑,例如:D:\Program\python27
2)點擊ok,在“Append environment to native environment ”前打勾,點擊Apply,然後Close。
3)重新運行class文件,在控制檯可以打印出以下字符串:
start
hello
[class所在目錄以及python安裝的一些目錄等]
end