好的,所以我在关闭程序后使用关闭钩子来运行外部更新程序。该挂钩在具有JDK的PC和Mac上按预期工作,但它不适用于仅具有Java运行时而不是JDK的Mac。知道为什么会这样吗?代码如下:
private void runExternalUpdater() {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
String n = program + "-new" + sysExt + "," + program + sysExt + ",Type1";
try {
Runtime.getRuntime().exec(new String[]{"java","-jar","UpdateProgram.jar",n});
} catch (IOException e) {
e.printStackTrace();
}
}
});
try {
Thread.sleep(250);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.exit(0);
}
编辑:正如评论中所述,这现在可以在安装JDK之后在有问题的机器上运行,所以现在我的问题是;为什么JDK需要运行这部分代码?我认为JDK只是在使用IDE时实际开发程序所必需的,并且JRE应该是运行已完成程序所需的唯一内容。