java 通過runtime 調用python 不顯示python運行內容的bug


先說下上面問題的原因,上面問題是因為python中用到了第三方的類庫,你的電腦上沒有那個類庫,所以程序沒有運行,在控制台也就看不到輸出。只要導入那個類庫就好。。。

python 導入類庫,可以單獨下載那個類庫安裝,也可以直接下載 Anaconda (這里面包含了python numpy pandas)不過比較大。

 不過我,不是用的上面的兩種方式,我是在pycharm 中打開的python程序,pycharm提示要不要自動下載類庫(類似於ideal 中寫java 代碼的自動導包),我選擇導入。(簡單粗暴)

pycharm 的安裝:https://blog.csdn.net/asd343442/article/details/84103444

  

最近公司要用到java調用python。

 通過百度了解到java 調用python有 Runtime() 和Jython 兩種方法。 runtime對於簡單的程序可以直接使用,也不用導包什么的。

  Jython是python在java語言平台的實現。我們平時使用的python其實是Cython 是python 在C語言的實現。 python只是語言規范,執行需要C JAVA 等語言去執行。 

 Jython的使用,需要安裝Jython的環境和導入Jython導包。

 參考文章 :https://www.cnblogs.com/nuccch/p/8435693.html

                 https://blog.csdn.net/it_xiao_bai/article/details/79074988

runtime java調用python參考代碼:

public class CallPy {
    public static void main(String[] args) throws IOException, InterruptedException {
        // TODO Auto-generated method stub
        int month = 5;
        Process proc;
        String lastLine = null;
        try {
            String[] strings = {"python", "E:\\devTool\\Pyproject\\demo\\second.py"}; String[] strings2 = {"E:\\devTool\\python\\python.exe", "D:\\add.py"}; // 執行py文件\\
            proc = Runtime.getRuntime().exec(strings);
            //用輸入輸出流來截取結果
            BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String content = null;while (true){ lastLine = content; if ((content = in.readLine()) == null){ System.out.println(lastLine); break; } }
            in.close();
            proc.waitFor();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
String substring = lastLine.substring(1, lastLine.length() - 1);
String[] split = substring.split(" ");

    


 第一個坑: 上面這段代碼,黃色部分是取出python輸出的最后一行的內容。

上面靛藍色的部分,上面部分是寫的2個python運行文件的地址,下面的是指的是對輸出的字符串,切割空格得到數組。因為我的電腦上有多個python運行環境(自己安裝了一個python,安裝了jython),如果不指定python.exe的絕對路徑,在下面字符串按照空格切割解得到的數組,中間會夾雜着 空字符串,解決辦法是,把 split(“  ”)引號中輸入2個空格。

第二個坑: 電腦上如果沒有python的環境,會報無法加載python文件的錯誤。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM