首页 > 解决方案 > 从 Java 程序运行 Jar 文件

问题描述

我正在尝试.jar从我的Java程序中运行一个。我习惯ProcessBuilder这样做,但它不能正常工作。

我想知道我是否遗漏了什么。

这就是我目前正在尝试运行的.jar

ProcessBuilder pb = new ProcessBuilder("java", "-jar", System.getProperty("user.home") + "/JARFile/JARFile.jar");
Process p = pb.start();

我的目录是正确的,所以我不确定为什么它不能正常工作。

我的参数有问题new ProcessBuilder吗?

标签: javajarprocessbuilder

解决方案


1)在第三个参数中设置文件的完整路径:

ProcessBuilder pb = new ProcessBuilder("java", "-jar",
            "/home/meiskalt7/Documents/runJar-55056616-1.0-SNAPSHOT.jar");

结果将如下所示:

public static void main(String[] args) throws IOException {
    ProcessBuilder pb = new ProcessBuilder("java", "-jar",
            "/home/meiskalt7/Documents/runJar-55056616-1.0-SNAPSHOT.jar");
    Process p = pb.start();
    InputStream in = p.getInputStream();
    System.out.println(new BufferedReader(new InputStreamReader(in))
            .lines().collect(Collectors.joining("\n")));
}

在控制台中你会看到执行结果

2)如果一切都好,那么你必须检查你的系统属性

System.out.println(System.getProperty("user.home"))

如果路径看起来像第一步中的路径,那么您必须将路径与等于运算符进行比较:

System.out.println((System.getProperty("user.home") + "/JARFile/JARFile.jar")
                                                      .equals([YOUR FULL PATH]))

也许您在路径中使用另一种语言的符号的问题

2*) 如果出现问题,您可以在流程的错误流中检查流程执行的错误:

InputStream err = p.getErrorStream();
        System.out.println(new BufferedReader(new InputStreamReader(err))
                .lines().collect(Collectors.joining("\n")));

推荐阅读