无法更新Android Studio - Access Denied和java.io.FileNotFoundException

时间:2014-03-25 21:25:35

标签: android android-studio

我正在尝试在两台独立的Windows计算机上将Android Studio从0.5.1更新到0.5.2,一台使用Windows 7 Pro 64位,另一台使用Windows 7 Enterprise 64位。

我收到正常的更新提示:

enter image description here

...如果我选择“更新并重新启动”,则会下载补丁并退出IDE,但随后会出现以下对话框:

enter image description here

我无法更改任何“解决方案”列条目。如果我单击“继续”,我会收到如下所示的消息(图像和文本,因此其复制/粘贴/搜索友好):

enter image description here

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问题跟踪器上打开了Issue 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 \

     

+ ----------------   文件操作失败。   这可能是由于文件被另一个文件锁定   应用。请尝试关闭任何申请   使用正在更新的文件然后按“重试”。   + ----------------

     

com.intellij.updater.RetryException:无法删除文件C:\ Program Files(x86)\ Android \ android-studio1 \ lib \ openapi.jar       在com.intellij.updater.BaseUpdateAction.replaceUpdated(BaseUpdateAction.java:40)       在com.intellij.updater.UpdateZipAction.doApply(UpdateZipAction.java:199)       在com.intellij.updater.PatchAction.apply(PatchAction.java:140)       在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)       在com.intellij.updater.Runner.doInstallImpl(Runner.java:307)       在com.intellij.updater.Runner.doInstall(Runner.java:268)       在com.intellij.updater.Runner.access $ 000(Runner.java:18)       在com.intellij.updater.Runner $ 2.execute(Runner.java:258)       在com.intellij.updater.SwingUpdaterUI $ 7.run(SwingUpdaterUI.java:230)       在java.lang.Thread.run(Thread.java:745)

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

11 个答案:

答案 0 :(得分:28)

解决方法:

  1. 关闭Android Studio。
  2. 右键点击&#34; Android Studio&#34;图标并选择&#34;以管理员身份运行&#34;。
  3. 转到&#34;帮助 - &gt;检查更新...&#34;,然后完成正常的更新过程
  4. 我意识到在从0.5.1到0.5.2的几次失败更新尝试之后,我不再获得Windows安全提示以允许JetBrains IntellJ安装程序继续进行,正如我在之前的成功更新中看到的那样。我不确定以前的更新有什么变化,但显然更新过程没有成功尝试访问没有适当权限的文件。通过上述过程将Android Studio升级为管理员解决了这个问题。

    如上面的问题所述,从0.5.2到0.5.3的更新似乎不再出现此问题。

    修改

    为了解决我在Android 0.6.0到Android 0.6.1更新时遇到的下一个错误,我关闭了Studio然后重新启动它,让它一夜之间(更巧合而不是设计)。当我早上回到机器并运行更新时,它成功了。因此,似乎存在某种长时间运行的进程在某些条件下阻止更新(可能在启动后立即 - 可能是Gradle构建进程?)。 @Daniel Wilson在下面的回答也适用于这种情况。

答案 1 :(得分:14)

这发生在我从0.6.0更新到0.6.1。我试图在管理模式下打开AS,其他所有应用程序都关闭但更新仍然失败了。我也尝试删除Temp文件夹。

最终我注意到在任务管理器关闭所有内容时,由于某种原因,我仍然在后台运行了一个相当大的java.exe。

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

答案 2 :(得分:8)

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

虽然在管理员模式下运行可能会使更新生效,但它也可能会影响在添加和/或更新的任何文件上设置的权限,以便Android工作室中使用此类文件的未来操作需要提升(管理员) )正常工作。

执行此操作将导致许多操作无法正常工作,除非Android Studio已在高架模式下运行。

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

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

每次我使用Process Explorer(在Windows上)检查哪个应用程序锁定了其中一个阻止Android Studio更新的文件时,它始终是Java的。

对我有用(在Windows上):

  1. 下载Process Explorer,并终止所有java.exe实例:在Process Explorer中,按Process列排序并找到java.exe实例,在突出显示的行上按 Del 。 (在旁注中,可以通过按 Ctl + F 来检查阻止更新的文件,例如jsch.agentproxy.usocket-nc.jar,然后输入文件名)
  2. 如果更新过程没有自动恢复,请将目标图标enter image description here拖到更新过程中将其终止。窗口 - 将其定位在Process Explorer的Process窗口中 - 然后按 Del 删除该过程
  3. 重新运行Android Studio(从开始菜单),然后重新启动更新过程。

答案 3 :(得分:4)

您也可以尝试授予用户该文件夹的权限。

  1. 右键单击&#34; android-studio&#34;文件夹并选择&#34;属性&#34;
  2. 更改为&#34;安全&#34;标签
  3. 点击&#34;编辑&#34;按钮
  4. 从&#34;组或用户名&#34;中选择组/用户名单
    1. 您可以选择/添加您的用户名到此列表 - 或 -
    2. 选择论坛&#34;用户&#34; (或您的用户所在的组)
  5. 选择&#34;完全控制&#34;复选框
  6. 点击&#34;申请&#34;并等待
  7. 你已经完成了。

答案 4 :(得分:2)

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

答案 5 :(得分:2)

我的Windows机器后台运行的Java进程在我的任务管理器中没有显示。这将确保Java被杀死:

taskkill / F / IM java.exe

答案 6 :(得分:0)

我遇到了同样的问题,但我通过在高架控制台中运行此脚本解决了这个问题: Program Files \ Android \ android-studio \ bin \ update_studio.bat

答案 7 :(得分:0)

我在更新Android Studio时解决了类似的问题,只需关闭所有其他正在运行的应用程序,例如Firefox,然后重新启动更新过程。

似乎某个文件只是由另一个程序启动而且Android Studio无法访问它。

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

答案 8 :(得分:0)

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

答案 9 :(得分:0)

我有同样的问题从2.2更新到2.2.1。 我的解决方案是下车然后再次进入:重新启动Windows

答案 10 :(得分:0)

我使用LockHunter查看锁定文件的内容。结果:Adb锁定了其中一些(我在移动电话中通过wifi测试应用程序)。我杀了adb服务器,重新启动Android Studio,我就能更新它了。

祝他人好运!