2012-06-07 107 views
14

問題:無法訪問jar文件的lib archquery.jar

  • 無法打開SDK管理器(僅閃爍一秒鐘)
  • 沒有構建路徑目標在Eclipse

路徑:

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 

回答

25

我有一個類似的問題 - 我不得不編輯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 
+5

OH GOD THANK YOU ...一直試圖讓android SDK運行一個多小時... –

+10

如果不起作用,請嘗試'set swt_path = lib \ x86_64'。 – Sawny

8

情況因人而異,但除了到編輯android.bat,如前面描述的答案,我還是沒能讓SDK Manager在Windows 8 64位上運行,直到我第一次:

  • 卸載了所有版本的Java
  • 重啓*
  • 只安裝了X86的JDK(包括安裝程序中的公共JRE選項)

我已經嘗試了所有的這些事情,更多以前*無需重新啓動,這是唯一的方式我得到了SDK管理器運行。希望這個信息可以讓你免受我經歷的一些徹底的沮喪和浪費。只是爲了讓工具在盒子外面運行而感到痛苦。可怕的經歷。

我會回答爲以前的答案評論,但顯然我沒有足夠的代表處做到這一點:https://meta.stackexchange.com/questions/25725/how-do-you-comment-on-a-specific-answer

編輯:下面更完整的答案。 (我不認爲重新啓動有什麼做它。)

似乎有幾種方法來啓動SDK管理器:

  1. SDK Manager.exe在Android SDK的根。
  2. SDK Manager.exe in sdk\tools\lib的Android SDK。
  3. Window -> Android SDK Manager Eclipse中的菜單
  4. android.batsdk\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 

,則在我的情況下,關鍵的問題是,它並選擇加載無論從lib\x86一個jar文件或這裏的lib\x86_64文件夾。在某些時候,事情感到困惑的BAT文件中的錯誤,一個32位的JDK和一個64位的Android SDK之間。

SO,在我的情況的解決方法是:

  1. 卸載所有Java版本
  2. 安裝JDK
    • 您可以使用32位的Android SDK和安裝32位JDK
    • 或者使用64位Android SDK並安裝64位JDK
    • 但是「bitne ss「應該與Android SDK匹配。看來,無論是32位或64位的一個將64位計算機上工作,只要JDK位數Android SDK的位數相匹配。
  3. 編輯「機器人。球棒」

    • 如果使用的是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 
      

做完之後這樣,我可以通過運行android.bat或從Eclipse菜單中成功運行SDK管理器(但仍不能直接運行SDK Manager.exe文件中的任何一個)。

3

在Windows 7上,至少執行批處理「FOR」循環時,執行列表命令時不使用當前工作目錄,而是使用根目錄。在這種情況下,命令是'%java_exe%-jar lib \ archquery.jar'。然而,它有效地從根部運行,例如, 'C:\'。你可以在命令行這種簡單的測試中看到這對你的自我:

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

所以運行archquery命令正在尋找相對於根目錄,而不是你的ADT目錄,罐子,因此不能被發現。

+1

我修好了我android.bar使用的完整路徑archquery,借力%WORK_DIR%變量成立較早的批處理文件: FOR/F %%一個在('%java_exe%的罐子%WORK_DIR%\ LIB \ archquery.jar')設置swt_path = lib \ %% a – Trinition

1

此更改爲android.bat(如下)爲我解決了問題。我現在也可以從Eclipse啓動SDK管理器。

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

What does %~dp0 mean, and how does it work?

2

我有類似的問題,這是它是如何解決的。

  1. 開放android.bat\android-sdk-windows\tools文件的編輯器。

  2. 找到行

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

    ,並在此行前加rem

  3. 在下一行添加set swt_path=lib\x86(如果您使用的是32位系統)或set swt_path=lib\x86_64(如果您使用的是64位系統)。

  4. 保存文件。如果你打開一個,關閉cmd。導航到android-sdk-windows\tools\並運行android。這應該打開SDK管理器。但一定要在您的環境變量中定義JAVA_HOME,並且應指向JDK主頁。

0

固定通過取代:

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變量。

希望可以幫助別人。

0

添加一個名爲「ANDROID_SWT」指着持有SWT.JAR得到這個工作對我來說目錄的環境變量。看起來像一個更好的選項,然後修改腳本。