Не удалось получить доступ к 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.