无法更新Android Studio – 访问被拒绝和java.io.FileNotFoundException

我试图在两台独立的Windows机器上将Android Studio从0.5.1更新到0.5.2,其中一台使用Windows 7 Pro 64位,另一台使用Windows 7 Enterprise 64位。

我得到正常的更新提示:

在这里输入图像说明

…如果我select“更新和重新启动”,补丁下载和IDE退出,但是我得到以下对话框:

在这里输入图像说明

我无法更改任何“解决scheme”列条目。 如果我点击“继续”,我会得到如下所示的消息(图像和文本,所以它的复制/粘贴/search友好):

在这里输入图像说明

Temp. directory: C:\Users\Sean\AppData\Local\Temp\ java.io.FileNotFoundException: C:\Program Files (x86)\Android\android-studio\lib\jsch.agentproxy.usocket-nc.jar (Access is denied) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:221) at java.io.FileOutputStream.<init>(FileOutputStream.java:171) at com.intellij.updater.Utils.copyStreamToFile(Utils.java:135) at com.intellij.updater.CreateAction.doApply(CreateAction.java:52) at com.intellij.updater.PatchAction.apply(PatchAction.java:140) at com.intellij.updater.Patch$3.forEach(Patch.java:198) at com.intellij.updater.Patch.forEach(Patch.java:248) at com.intellij.updater.Patch.apply(Patch.java:194) at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:86) at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:77) at com.intellij.updater.Runner.doInstallImpl(Runner.java:307) at com.intellij.updater.Runner.doInstall(Runner.java:268) at com.intellij.updater.Runner.access$000(Runner.java:18) at com.intellij.updater.Runner$2.execute(Runner.java:258) at com.intellij.updater.SwingUpdaterUI$7.run(SwingUpdaterUI.java:230) at java.lang.Thread.run(Thread.java:744) 

当我点击“退出”,Android Studio重新打开,并告诉我,更新仍然可用。

我之前在两台机器上使用同样的方法更新了Android Studio,没有任何问题。

由于我认为这是Android Studio针对新版本的某种错误,因此我在AOSP问题跟踪器上打开了问题67794 。

编辑

我能够在两台机器上从0.5.2更新到0.5.3而不会遇到这个问题。 我在前面的成功更新中显示了JetBrains安装程序的Windows安全提示,并且更新成功完成,无需使用提升的权限启动Android Studio。 所以,看起来这个问题是特定于0.5.1或0.5.2补丁的。

编辑

我试图从Android Studio 0.6.0更新到0.6.1时遇到类似的错误:

温度。 目录:C:\ Users \ barbeau \ AppData \ Local \ Temp \

+ —————-文件操作失败。 这可能是由于文件被另一个应用程序locking。 请尝试closures任何使用正在更新的文件的应用程序,然后按“重试”。 + —————-

com.intellij.updater.RetryException:无法删除com.intellij.updater.BaseUpdateAction.replaceUpdated(BaseUpdateAction.java:40)上的文件C:\ Program Files(x86)\ Android \ android-studio1 \ lib \ openapi.jar .intellij.updater.UpdateZipAction.doApply(UpdateZipAction.java:199)at com.intellij.updater.PatchAction.apply(PatchAction.java:140)at com.intellij.updater.Patch $ 3.forEach(Patch.java:198)在com.intellij.updater.Patch.forEach(Patch.java:248)在com.intellij.updater.Patch.apply(Patch.java:194)在com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:86 )com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:77)at com.intellij.updater.Runner.doInstallImpl(Runner.java:307)at com.intellij.updater.Runner.doInstall(Runner.java: 268)com.intellij.updater.Runner.access $ 000(Runner.java:18)at com.intellij.updater.Runner $ 2.execute(Runner.java:258)at com.intellij.updater.SwingUpdaterUI $ 7.run( SwingUpdaterUI.java:230)在java.lang.Thread.run(Thread.java:745)

如果在Gradle构build过程仍在运行的情况下尝试运行更新(例如,在您启动Android Studio之后),似乎就会发生这种情况。

Solutions Collecting From Web of "无法更新Android Studio – 访问被拒绝和java.io.FileNotFoundException"

解决方法:

  1. closuresAndroid Studio。
  2. 右键单击“Android Studio”图标并select“以pipe理员身份运行”。
  3. 转到“帮助 – >检查更新…”,并通过正常的更新过程

在从0.5.1到0.5.2的几次更新失败后,我意识到我不再获得Windows安全提示,允许JetBrains IntellJ安装程序继续进行,正如我在以前的成功更新中看到的那样。 我不知道以前的更新有什么变化,但显然更新过程没有正确的权限尝试访问文件失败。 通过上述过程将Android Studio升级到pipe理员已解决问题。

正如上面的问题所指出的,这个问题似乎不再出现在从0.5.2更新到0.5.3的情况下。

编辑

为了解决Android 0.6.0到Android 0.6.1更新遇到的下一个错误,我closures了Studio,然后重新启动了它,让它坐过夜(比devise更巧合)。 当我在早上回到机器上运行更新时,它成功了。 所以,似乎有某种长时间运行的进程会在某些条件下阻塞更新(可能是刚刚启动后 – 可能是Gradle构build过程?)。 丹尼尔·威尔逊的答案也应该适用于这种情况。

这发生在我从0.6.0更新到0.6.1。 我试图以pipe理模式打开AS,其他应用程序closures,但更新仍然失败。 我也尝试删除Temp文件夹。

最后我注意到,在任务pipe理器中,当一切都closures时,我仍然有一个相当大的java.exe仍然在后台运行。

我所做的是在pipe理模式下打开AS,运行更新并让它失败,声称文件被locking/访问被拒绝或类似的东西。 打开任务pipe理器,我注意到2个java.exe进程正在运行。 对我来说,较小的一个(约200k)是AS更新程序本身。 但是,如果我杀了更大的(大约60万),并重试,更新没有问题。

不要以pipe理员身份重新安装!

虽然在pipe理员模式下运行可能会使更新工作,但也可能影响添加和/或更新的任何文件上设置的权限,以便在Android Studio中使用此类文件的将来操作将需要提升(Admin)访问权限好好工作。

这样做会导致许多操作无法工作,除非Android Studio已经在提升模式下运行。

相反,处理文件锁,然后再试一次:

尝试杀死java.exe的所有实例 (在任务pipe理器或进程资源pipe理器中),然后重新尝试更新,但不能以pipe理员身份运行。

每次我使用Process Explorer (在Windows上)来检查哪个应用程序对Android Studio更新阻止的文件之一有locking时,它始终是Java。

什么对我有用(在Windows上):

  1. 下载Process Explorer ,并终止java.exe的所有实例:在Process Explorer中,按Process列sorting并findjava.exe实例,在突出显示的行上按下Del键。 (在附注中,阻止更新的文件,例如jsch.agentproxy.usocket-nc.jar ,可以通过按Ctl + F ,然后input文件名来检查)
  2. 如果更新过程不能自动恢复,请通过拖动目标图标来终止更新过程 在这里输入图像说明 到更新进程的窗口 – 这在Process Explorer的Process窗口中find它 – 然后按Del删除进程
  3. 重新运行Android Studio(从开始菜单),并重新启动更新过程。

你也可以尝试给你的用户权限的文件夹。

  1. 右键单击“android-studio”文件夹并select“属性”
  2. 切换到“安全”选项卡
  3. 点击“编辑”button
  4. 从“组或用户名称”列表中select组/用户
    1. 您可以select/添加您的用户名到这个列表 – 或 –
    2. select组“用户”(或您的用户所在的组)
  5. select“完全控制”checkbox
  6. 点击“应用”,然后等待

你完成了。

禁用防病毒并再次尝试更新….为我工作。

我坚持在同样的问题,但我解决了这个问题,在提升的控制台运行这个脚本:Program Files \ Android \ android-studio \ bin \ update_studio.bat

我通过closures所有其他正在运行的应用程序(如Firefox)并重新启动更新过程来更新Android Studio时解决了类似的问题。

看来,一个文件只是由另一个程序,它不能被Android Studio访问。

解决此问题的另一种方法是删除相应文件夹中的所有文件,例如:User / AppData / Local / Temp

我有同样的问题 – 从0.6.0更新到0.6.1按下button“更新”后,Android Studio重新启动并开始更新。 之后我得到了“错误信息”。 我按了“重试”button – 这是不成功的。 然后,我等了大约2分钟(在我的工作室,开始Gradle工作后),再次按“重试” – 完成! :)一切都被更新。 所以在我的情况下,问题的原因是Android Studio开始工作后的Gradle。

我有这个相同的问题从2.2更新到2.2.1。 我的解决scheme是走出车然后再次进入:重新启动Windows

我使用LockHunter来查看locking文件的内容。 结果:Adblocking了其中的一部分(我正在通过手机上的wifitesting应用程序)。 我杀了adb服务器,重新启动Android Studio,我可以更新它。

祝他人好运!