Java ProcessBuilder类无法运行.py脚本

55ooxyrt  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(260)

我有一个程序,它构建了一组进程,这些进程需要执行一个main.py脚本,但它们之间的参数不同。

python C:/Users/us/Git/main.py 2 24 C:/Users/us/Git/output
python C:/Users/us/Git/main.py 24 48 C:/Users/us/Git/output

在Java中,我使用ProcessBuilder来运行流程:

for (int i = 0; i < cores; i++) {
    ProcessBuilder pb;
    if (i == 0) {
        pb = new ProcessBuilder("python", scriptPath, "" + 2, "" + (last + subpart + diff) + "", "" + currentPath + "\\output");
        last = last + subpart + diff;
    } else {
        pb = new ProcessBuilder("python", scriptPath, "" + last, "" + (last + subpart) + "", "" + currentPath + "\\output");
        last = last + subpart;
    }
    builders[i] = pb;
}
for (int i = 0; i < cores; i++) {
    processes[i] = builders[i].start();
}
System.out.print("waiting for " + processes.length + " processes to end");

但是,每次运行Java程序时,似乎ProcessBuilder没有运行脚本......为什么?如何解决?
我目前使用Intellij作为IDE。
我试着构建项目并运行.jar文件,看起来很有效,但我实际需要的是运行脚本,而不是每次都构建项目

为什么我认为ProcessBuilder不运行脚本?

脚本运行后,经过集群处理后,会产生一些文件,这些文件必须在output目录下,java代码在处理完后去查找这些文件,没有找到,实际上抛出的Exeption是:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.io.File.getName()" because "winner" is null
zzlelutf

zzlelutf1#

错误出在环境变量中,我有两个环境变量,一个指向python.exe,另一个指向Python/Scripts文件夹,后者位于python.exe文件的目录中,似乎,出于某种奇怪的原因,Java调用Scripts文件夹来执行我作为输入传递给Process Builder类的脚本。所以我删除了那个环境变量,然后继续更新python脚本中使用的所有库。

相关问题