如何從java調用和執行python類方法。我當前的Java代碼的工作,但只有當我寫:Java - 如何使用processbuilder調用python類
if __name__ == '__main__':
print("hello")
但我想執行一個類的方法,不管if __name__ == '__main__':
例蟒蛇類的方法,我想運行:
class SECFileScraper:
def __init__(self):
self.counter = 5
def tester_func(self):
return "hello, this test works"
本質上我想在java中運行SECFileScraper.tester_func()。
我的Java代碼:
try {
ProcessBuilder pb = new ProcessBuilder(Arrays.asList(
"python", pdfFileScraper));
Process p = pb.start();
BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
System.out.println("Running Python starts: " + line);
int exitCode = p.waitFor();
System.out.println("Exit Code : " + exitCode);
line = bfr.readLine();
System.out.println("First Line: " + line);
while ((line = bfr.readLine()) != null) {
System.out.println("Python Output: " + line);
}
} catch (Exception e) {
e.printStackTrace();
}
pdfFileScraper是文件路徑到我的Python腳本。
我試過jython,但我的python文件使用熊貓和sqlite3,它不能用jython實現。
它沒有做任何輸出。所有我得到的是:'運行Python啓動: 退出代碼:0 第一行:null' – Theo
ProcessBuilder只能處理* printed *返回輸出,所以返回字符串的行實際上不會顯示任何可以解析的東西。你需要「打印」這個測試工作「'來獲得所需的結果。如果你想直接與python對象交互,那麼你將不得不使用像mko這樣的解決方案 - 即在虛擬機中加載一個python解釋器並直接與它交互。 – Petesh