从Java程序运行Jar文件

时间:2019-03-08 04:12:22

标签: java jar processbuilder

我正在尝试从.jar程序中运行Java。我正在使用ProcessBuilder来执行此操作,但是它无法正常工作。

我想知道我是否想念一些东西。

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

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

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

我在new ProcessBuilder中的参数有问题吗?

1 个答案:

答案 0 :(得分:0)

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"))

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

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")));