java.io.IOException:访问被拒绝

java.io.IOException:访问被拒绝,java,Java,我需要更新我的申请。为此,我删除程序当前运行的.jar文件,并创建一个同名的新文件,然后重新启动应用程序 然而,当我尝试这样做时,我得到一个java.io.IOException:访问被拒绝 我怎样才能解决这个问题 谢谢 问题是,jar文件被JVM(特别是类装入器)使用。即使在Java7中,当不再需要jar时,类加载器会关闭jar文件,也不能保证底层资源会被释放,更确切地说,是在释放的时候 有关更多信息,请查看 你有几个选择 你可以。。。 将更新过程与应用程序分离(因此它是一个独立的程序),并使

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

然而,当我尝试这样做时,我得到一个
java.io.IOException:访问被拒绝

我怎样才能解决这个问题


谢谢

问题是,
jar
文件被JVM(特别是类装入器)使用。即使在Java7中,当不再需要jar时,类加载器会关闭jar文件,也不能保证底层资源会被释放,更确切地说,是在释放的时候

有关更多信息,请查看

你有几个选择

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

cmd /c start /b /normal "" {command line to be executed}
在Linux下,我相信您可以使用
nohup
,但我没有这方面的经验

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

你可以。。。
您可以使用它提供自己的更新功能的

问题是,
jar
文件被JVM(特别是类加载器)使用。即使在Java7中,当不再需要jar时,类加载器会关闭jar文件,也不能保证底层资源会被释放,更确切地说,是在释放的时候

有关更多信息,请查看

你有几个选择

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

cmd /c start /b /normal "" {command line to be executed}
在Linux下,我相信您可以使用
nohup
,但我没有这方面的经验

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

你可以。。。
您可以使用提供自身更新功能的代码

请添加您正在使用的代码,并显示错误出现在哪一行。请添加您正在使用的代码,并显示错误出现在哪一行。