java - 使用 Java 执行 jar 文件仅适用于 pc 到 pc 的基础

标签 java windows jar process

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

我已经尝试使用 Process 和 Runtime 类来运行 jar 文件,但我在自己的电脑上一无所获,但似乎有 1:10 的人尝试了这个分布式软件(也在 jar 中form) 似乎无法运行 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% 的成功。

最佳答案

如果 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 });

关于java - 使用 Java 执行 jar 文件仅适用于 pc 到 pc 的基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54220656/

相关文章:

java - Android使用recyclerview、cardview和volley从php mysql加载完整图像

windows - Teamcity 管道命令行输出到文件

java - 使用 URLClassLoader 加载 jar 时如何获取资源文件?

java - 列出多个jar文件的内容

java - 使用提供的依赖项构建 Artifact ,然后从命令行选择并指定它

java - 为什么项目结构中添加的外部依赖项不会出现在编译时(Intellij)?

java - 如何在java中有一个常量初始化 vector 和 key ?

java - 重新定位 Line2D Java

c - Windows 上的 mktime 失败

windows - 您在 Windows 上为 Ruby 使用什么 IDE/编辑器?