java.io.IOException:访问被拒绝

时间:2014-06-15 23:04:50

标签: java

我需要更新我的申请。为此,我删除了我的程序当前运行的.jar文件并创建一个具有相同名称的新文件,然后重新启动应用程序。

然而,当我尝试这样做时,我得到java.io.IOException: Access is denied

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:3)

问题是,jar文件已被JVM使用(特别是类加载器)。即使在Java 7中,当不再需要jar文件时,类文件也会被类加载器关闭,因此不能保证底层资源将被释放,或者更具体地说,它们将被释放。

有关更多信息,请查看Closing a URLClassLoader

你有几个选择。

你可以......

将更新过程与应用程序分开(因此它是一个独立的程序)并使用无父执行过程来更新应用程序。这涉及到执行你的程序,它允许当前进程在新进程之前终止,在windows下这可以通过使用类似的东西来实现...

cmd /c start /b /normal "" {command line to be executed}

在Linux下我相信你可以使用nohup,但我没有经验。

(不要忘记使用System.exit来终止当前流程;))

你可以......

您可以使用Java Web Start来提供自己的更新功能