从Java jar文件调用python脚本

时间:2016-08-03 17:19:12

标签: java python pywin32

我正在开发一个使用Java和Python的项目,使用Java作为GUI,使用Python作为后端。当使用以下代码按下按钮时,Java程序调用Python脚本:

Runtime r = Runtime.getRuntime();
String pyScript = "resources/script.py";
String scriptPath = getClass().getResource(pyScript).toExternalForm();
// Strip "file/" from path
scriptPath = scriptPath.substring(scriptPath.indexOf("/") + 1);
Process p = r.exec("python " + scriptPath)

python脚本位于Java项目的src文件夹中名为resources的文件夹中。当我在IDE(IntelliJ)中运行程序时,此代码有效,但是当我创建.jar文件并尝试运行脚本时,没有任何操作。我可以确认该程序仍然在.jar文件中找到该脚本。 如何让脚本运行?

1 个答案:

答案 0 :(得分:0)

在此解决方案中,如果文件存在,我们将运行脚本。脚本可以是完整路径或相对路径。该脚本不在jar文件中。

  

TestPython.java

import java.lang.*;
import java.io.*;

public class TestPython {
    public static void main(String[] args) {

        System.out.println("I will run a Python script!");
        Runtime r = Runtime.getRuntime();
        String pyScript = "py/test.py";

        File f = new File(pyScript);
        if (f.exists() && !f.isDirectory()) {
            try {
                Process p = r.exec("python " + pyScript);
                BufferedReader in = new BufferedReader(
                    new InputStreamReader(p.getInputStream()));
                String line = null;
                while ((line = in .readLine()) != null) {
                    System.out.println(line);
                }
                System.out.println("Python script ran!!");
            } catch (Exception ex) {
                System.out.println("Something bad happened!!");
                ex.printStackTrace();
            }
        } else {
            System.out.println("Unexistent file!" + pyScript);
        }
    }
}
  

PY / test.py

print("I'm a Python script!!!")
  

输出

     

我将运行一个Python脚本!

     

我是一个Python脚本!

     

Python脚本跑了!!