首页 > 解决方案 > 使用 Java 执行 jar 文件只能在 pc 到 pc 的基础上工作

问题描述

我正在尝试为 Java 应用程序创建一个启动器,它将自动更新/下载计算机用户主区域中的 jar 文件,然后继续执行它。

我尝试使用 Process 和 Runtime 类来运行 jar 文件,我在自己的电脑上只取得了成功,但似乎 1:10 尝试这个分布式软件(也是 jar 形式)的人可以' 似乎没有要运行的 jar 文件(作为参考,我已确保所有测试此应用程序的人都安装了最新版本的 Java)。

负责运行jar文件的代码如下:

 public static void startApplication() {
        try {
             Process proc = Runtime.getRuntime().exec("java -jar "+(saveDirectory + fileName));
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }

我希望 jar 文件 fileName 在位置 saveDirectory 中打开,但是在 pc 到 pc 场景中并非总是如此。我只是想知道是否有更好的方法可以确保 100% 的成功。

标签: javawindowsjarprocess

解决方案


如果user.home包含空格,这可能无法正常工作,因为该命令是按原样评估的,因为它被提供为String. 使用Runtime.exec(String[])版本:

Runtime.getRuntime().exec(new String[] { "java", "-jar", saveDirectory + fileName });

此外,您可能希望规范化 JAR 路径:

Path path = Paths.get(saveDirectory, fileName);
String fullPath = path.normalize().toAbsolutePath().toString();
Runtime.getRuntime().exec(new String[] { "java", "-jar", fullPath });

推荐阅读