Не удается обновить Android Studio - Отказано в доступе и java.io.FileNotFoundException

Я пытаюсь обновить Android Studio с 0.5.1 до 0.5.2 на двух отдельных машинах Windows, один с 64-разрядным Windows 7 Pro и один с 64-разрядным Windows 7 Enterprise.

Я получаю сообщение о нормальном обновлении:

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, относящаяся к более новым версиям, я открыл Issue 67794 в трекере по проблеме AOSP.

ИЗМЕНИТЬ

Я смог обновить с 0.5.2 до 0.5.3 сегодня на обеих машинах, не сталкиваясь с этой проблемой. Мне было показано приглашение безопасности Windows для установщика JetBrains, как и в предыдущих успешных обновлениях, и обновление завершено успешно, без необходимости запуска Android Studio с повышенными разрешениями. Таким образом, кажется, проблема была чем-то специфичным для патчей 0.5.1 или 0.5.2.

ИЗМЕНИТЬ

Я столкнулся с аналогичной ошибкой при попытке обновления с Android Studio 0.6.0 до 0.6.1:

Temp. каталог: C:\Users\barbeau\AppData\Local\Temp\

+ ---------------- Не удалось выполнить операцию с файлом. Это может быть связано с тем, что файл заблокирован другим выражение. Попробуйте закрыть любое приложение который использует обновляемые файлы, затем нажмите "Повторить". + ----------------

com.intellij.updater.RetryException: невозможно удалить файл C:\Program Files (x86)\Android\android-studio1\lib\openapi.jar     at com.intellij.updater.BaseUpdateAction.replaceUpdated(BaseUpdateAction.java:40)     at com.intellij.updater.UpdateZipAction.doApply(UpdateZipAction.java:199)     на 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)     at com.intellij.updater.Patch.apply(Patch.java:194)     на com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:86)     at com.intellij.updater.PatchFileCreator.apply(PatchFileCreator.java:77)     на 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 все еще запущен (например, сразу после запуска Android Studio).

Ответы

Ответ 1

Обходной путь:

  • Закройте Android Studio.
  • Щелкните правой кнопкой мыши значок "Android Studio" и выберите "Запуск от имени администратора".
  • Перейдите в "Справка- > Проверить обновление..." и пройдите обычный процесс обновления.

Я понял, что после нескольких неудачных попыток обновления с 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 ответ ниже должен также работать для этого сценария.

Ответ 2

Это произошло со мной, начиная с 0.6.0 до 0.6.1. Я попытался открыть AS в режиме администратора, когда все остальные приложения закрыты, но обновление все еще не удалось для меня. Я также попытался удалить папку Temp.

В конце концов я заметил в диспетчере задач, когда все было закрыто. По какой-то причине у меня по-прежнему оставался значительный java.exe, который по-прежнему работает в фоновом режиме.

То, что я сделал, это открыть AS в режиме администратора, запустить обновление и дать ему потерпеть неудачу, заявив, что файл заблокирован/доступ запрещен или что-то подобное. Откройте диспетчер задач, и я заметил, что работает 2 java.exe. Для меня меньшая (около 200 тыс.) Была самой утилитой AS updater. Но если я убил более крупный (около 600 тыс.) И ударил повтор, обновление прошло без проблем.

Ответ 3

Не переустанавливайте в качестве администратора!

В то время как работа в режиме администратора может сделать обновление работоспособным, оно также может влиять на разрешения, установленные для любых файлов, которые были добавлены и/или обновлены, так что будущие операции в студии Android, использующие такие файлы, потребуют повышения (Admin ) доступ к работе должным образом.

Выполнение этого приведет к тому, что многие операции не будут работать, если Android Studio не будет запущен в режиме повышенной безопасности.

Вместо этого обработайте блокировку файла, затем повторите попытку:

Попробуйте убить все экземпляры java.exe (в диспетчере задач или в проводнике процессов), затем повторите попытку обновления, но не выполняйте роль администратора.

Каждый раз, когда я использовал Process Explorer (в Windows), чтобы проверить, какое приложение имеет блокировку на одном из файлов, которые блокировали Android Обновление Studio, это всегда была Java.

Что работало для меня (в Windows):

  • Загрузите Process Explorer и убейте все экземпляры java.exe: в проводнике процессов, сортируйте по столбцу Process и найдите java.exe экземпляры, нажмите Del в выделенной строке. (С другой стороны, файл, блокирующий обновление, например jsch.agentproxy.usocket-nc.jar, можно проверить, нажав Ctl + F, а затем введите имя файла)
  • Если процесс обновления не возобновляется автоматически, убейте его, перетащив значок цели enter image description here в окно процесса обновления - это обнаружит его в окне Process Explorer Process, а затем нажмите Del для удаления процесса.
  • Запустите Android Studio (из меню "Пуск" ) и повторно запустите процесс обновления.

Ответ 4

Вы также можете попытаться предоставить пользователю разрешение на доступ к этой папке.

  • Щелкните правой кнопкой мыши папку "android-studio" и выберите "Свойства"
  • Перейдите на вкладку "Безопасность"
  • Нажмите кнопку "Изменить"
  • Выберите группу/пользователя из списка "Группы или имена пользователей"
    • Вы можете выбрать/добавить свое имя пользователя в этот список -или -
    • Выберите группу "Пользователи" (или группу, в которой находится ваш пользователь)
  • Установите флажок "Полный контроль"
  • Нажмите "Применить" и подождите

Вы закончили.

Ответ 5

Отключите антивирус и повторите попытку обновления... Работал для меня.

Ответ 6

Я застрял в одной и той же проблеме, но решил это, запустив эту script в повышенной консоли: Программные файлы\Android\android-studio\bin\update_studio.bat

Ответ 7

Я решил аналогичную проблему при обновлении Android Studio, просто закрыв все остальные запущенные приложения, такие как Firefox, и перезапустил процесс обновления.

Кажется, что файл просто другой программой, и он не может быть доступен Android Studio.

Еще один способ решить эту проблему - удалить все файлы в соответствующей папке, например: User/AppData/Local/Temp

Ответ 8

У меня была та же проблема - обновление от 0.6.0 до 0.6.1 После нажатия кнопки "Обновить" студия Android перезапустилась и начала обновляться. После этого я получил сообщение об ошибке. Я нажал кнопку "Повторить" - это было неудачно. Затем я подождал около 2 минут (в моей студии после запуска Gradle работает) и снова нажал "Повторить" - Готово!:) Все было обновлено. Так что в моем случае причиной проблемы был Gradle, который работает после запуска студии Android.

Ответ 9

У меня была эта же проблема с обновлением с 2.2 до 2.2.1. Мое решение заключалось в том, чтобы выйти из машины, а затем снова войти: Перезагрузка Windows

Ответ 10

Я использовал LockHunter, чтобы узнать, что блокирует файлы. Результат: Adb заблокировал некоторые из них (я тестировал приложение Wi-Fi в мобильном телефоне). Я убил adb-сервер, перезапустил Android Studio, и я смог его обновить.

Удачи другим!