我正在尝试为 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/