Не удалось получить доступ к jarfile lib\archquery.jar

Проблема:

  • Невозможно открыть диспетчер SDK (мигает только на секунду)
  • Нет цели пути построения в Eclipse

Paths:

Android SDK: C:\Program Files\Android\android-sdk
JDK used for android: C:\Program Files\Java\jdk1.7.0_04 (There are other JDKs also in dir Java)

Переменные среды:

ANDROID_SDK_HOME: C:\Program Files\Android\android-sdk
JAVA_HOME: C:\Program Files\Java\jdk1.7.0_04;C:\Program Files (x86)\Java\jre1.6.0;C:\Program Files\Java\jre7;
System Path: C:\Program Files\Java\jdk1.7.0_04\bin;C:\Program Files\Java\jdk1.7.0_01\bin;C:\Program Files (x86)\Java\jdk1.5.0\bin;C:\Program Files\Android\android-sdk\tools\

Ошибки:

SDK Manager on cmd
Failed to execute tools\android.bat. 
The system cannot find the file specified

Android.bat on cmd
Unable to access jar file lib\archquery.jar
Invalid path

find_java on cmd
nothing returned

Ответы

Ответ 1

У меня была аналогичная проблема - мне пришлось редактировать android.bat(и traceview.bat, когда мне это было нужно)

в android.bat искать

for /f %%a in ('%java_exe% -jar %frameworkdir%archquery.jar') do set swt_path=%frameworkdir%%%a

заменить

set swt_path=lib\x86

Ответ 2

YMMV, но в дополнение к редактору android.bat, как описано в предыдущем ответе, я все еще не мог заставить диспетчер SDK работать на 64-разрядной версии Windows 8, пока я не первый:

  • удалены ВСЕ версии Java
  • перезагружается *
  • установлен ТОЛЬКО JKK X86 (включая параметр Public JRE в установщике)

Я пробовал все эти вещи и ранее ранее * БЕЗ перезагрузки, и это был единственный способ, которым я когда-либо запускал диспетчер SDK. Надеюсь, эта информация избавит вас от некоторых из крайних разочарований и потерянного времени, которое я испытал. Какая боль в заднице только для того, чтобы получить инструменты из коробки. Ужасный опыт.

Я бы ответил как комментарий к предыдущему ответу, но, видимо, мне не хватает репутации для этого: https://meta.stackexchange.com/questions/25725/how-do-you-comment-on-a-specific-answer

EDIT: более полный ответ ниже. (Я не думаю, что перезагрузка имела к этому какое-то отношение.)

Кажется, есть несколько способов запустить диспетчер SDK:

  • SDK Manager.exe в корне Android SDK.
  • SDK Manager.exe в sdk\tools\lib Android SDK.
  • Window -> Android SDK Manager меню в Eclipse
  • android.bat в sdk\tools Android SDK.

В моем случае это выглядит как android.bat не работает в строке:

for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a

Что касается этой строки... если я запускаю вручную: "[path_to_java]java" -jar lib\archquery.jar

Он успешно возвращает: x86_64

Но когда командный файл запускает ту же самую команду, я не знаю, почему, но она не работает с сообщением об ошибке:

Unable to access jarfile lib\archquery.jar

Таким образом, переменная swt_path устанавливается в пустую строку. Все отрывается оттуда.

Пакетный файл устанавливает правильное значение для переменной java_exe. Другие обычно сообщали об этом как о проблеме, но обходные пути не были актуальны в моем случае.

Люди рекомендуют комментировать строку проблем, добавляя REM к началу этого и добавляя строку, чтобы вручную установить переменную swt_path, которая является допустимым обходным путем:

REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
set swt_path=lib\x86

НО, критическая проблема в моем случае заключается в том, что она выбрала загрузку jar файла из папки lib\x86 или lib\x86_64. В какой-то момент все стало путаться между ошибкой файла BAT, 32-битным JDK и 64-битным Android SDK.

SO, обходной путь в моем случае состоял в следующем:

  • Удалите ВСЕ версии Java
  • Установить JDK
    • Вы можете использовать 32-битный Android SDK и установить 32-разрядный JDK
    • Или используйте 64-битный Android SDK и установите 64-битный JDK
    • Но "битность" JDK должна соответствовать Android SDK. Похоже, что любой из 32-разрядных или 64-разрядных будет работать на 64-разрядном компьютере, AS LONG AS, так как бит JDK соответствует битке Android SDK.
  • Изменить "android.bat"

    • Если вы используете 32-битный Android SDK/JDK, используйте lib\x86:

      REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
      set swt_path=lib\x86
      
    • Если вы используете 64-битный Android SDK/JDK, используйте lib\x86_64:

      REM for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a
      set swt_path=lib\x86_64
      

После этого я могу успешно запустить диспетчер SDK, запустив android.bat или из меню Eclipse (но все же не запустив ни один из файлов SDK Manager.exe напрямую).

Ответ 3

В Windows 7, по крайней мере, пакетный цикл "FOR" при выполнении команды для списка не использует текущий рабочий каталог, а корень. В этом случае команда "% java_exe% -jar lib\archquery.jar". Однако он эффективно запускается из корня, например. 'C: \'. Вы можете увидеть это для себя с помощью этого простого теста из командной строки:

for /f %a in ('CD') do echo %a

Таким образом, команда запуска archquery ищет банку относительно корневого каталога, а не вашего каталога ADT, и, следовательно, не может быть найден.

Ответ 4

У меня была аналогичная проблема, и именно так она и решена.

  • Откройте android.bat файл из \android-sdk-windows\tools в редакторе.

  • Найдите строку

    for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a
    

    и добавьте rem перед этой строкой.

  • В следующей строке добавьте set swt_path=lib\x86 (если вы используете 32-разрядную систему) или set swt_path=lib\x86_64 (если вы используете 64-разрядную систему).

  • Сохраните файл. Закройте cmd, если у вас есть один открытый. Перейдите к android-sdk-windows\tools\ и запустите андроид. Это должно открыть диспетчер SDK. Но не забудьте указать JAVA_HOME в переменных среды и указать на JDK home.

Ответ 5

Это изменение для android.bat(ниже) исправило проблему для меня. Теперь я могу запустить диспетчер SDK из Eclipse.

for /f "delims=" %%a in ('"%java_exe%" -jar %~dp0\lib\archquery.jar') do set swt_path=lib\%%a

См. Что означает% ~ dp0 и как оно работает?

Ответ 6

Я зафиксировал это, заменив:

for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a

с

REM for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a
set swt_path="lib\x86_64"

Обратите внимание, что я использовал " для переменной swt_path.

Надеюсь, что это поможет кому-то другому.

Ответ 7

Добавление переменной окружения под названием "ANDROID_SWT", указывающей на каталог, который содержит swt.jar, заставил это работать для меня. Кажется, это лучший вариант, а затем изменение script.