【发布时间】:2019-02-13 14:13:49
【问题描述】:
我希望我的 java 应用程序能够自动保持最新状态,我已经编写了所有代码来下载最新的 jar 文件并将其放在指定的路径中,但是由于我的程序必须打开才能实际检查是否有可用的更新,然后更新它们它给了我这个错误:
Exception in thread "main" java.nio.file.FileSystemException: name.jar: The process cannot access the file because it is being used by another process
现在我的问题不是我为什么会收到此错误,因为原因很明显,问题是:我将如何成功地实际更新 .jar 文件,因为它必须打开才能实际下载更新?如果有其他选择,我宁愿不制作另一个 .jar 来充当独立更新程序。
我用来测试的代码示例:
URL url = new URL("<working url to the .jar file>");
InputStream in = url.openStream();
Files.copy(in, Paths.get("app.jar"), StandardCopyOption.REPLACE_EXISTING);
in.close();
【问题讨论】:
-
这种技术被称为热交换 - 在DZone上有一个有用的当前解决方案概要
-
这似乎是由stackoverflow.com/questions/60764/…回答的。
-
虽然我不想在运行时添加一个 jar,但我正在寻找一种解决方案,在它运行时用新的 jar 覆盖原来的 jar。
标签: java