从Java程序运行Jar文件

问题描述 投票:0回答:1

我试图从我的.jar程序中运行Java。我使用ProcessBuilder这样做,但它无法正常工作。

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

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

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

我有正确的目录,所以我不肯为什么这不正常。

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

java jar processbuilder
1个回答
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")));
© www.soinside.com 2019 - 2024. All rights reserved.