You need to enable JavaScript to run this app. 如何使用ProcessBuilder启动带JavaFX模块参数的可运行jar包
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ProcessBuilder启动带JavaFX模块参数的可运行jar包

问题原因

ProcessBuilder 对参数的解析逻辑和终端不同,终端会自动按空格拆分参数,但是ProcessBuilder要求每个独立参数必须单独作为字符串传入,你原代码中将--module-path和对应的路径值合并成了同一个参数,导致JVM无法识别该参数。
另外注意JDK的执行文件名称是小写的java,大小写敏感的系统(如macOS/Linux)下大写的Java会触发文件找不到错误。

正确写法

ProcessBuilder pb = new ProcessBuilder(
        "/Users/rawfodog/Documents/OpenJRE11/Contents/Home/bin/java",
        "-jar",
        "--module-path",
        "/Users/rawfodog/Downloads/AllLibrary",
        "--add-modules=javafx.controls,javafx.fxml",
        "/Users/rawfodog/Downloads/app.jar"
);
// 合并标准输出和错误输出,避免进程因缓冲区满卡住
pb.redirectErrorStream(true);
Process process = pb.start();

额外排查建议

如果运行仍然报错,可以读取进程的输入流打印执行日志,定位具体问题:

try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}
int exitCode = process.waitFor();
System.out.println("命令执行退出码:" + exitCode);

内容的提问来源于stack exchange,提问作者Rawfodog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 14:54:07