无法访问jarfile lib \ archquery.jar

时间:2012-06-07 05:50:47

标签: android sdk installation

问题:

  • 无法打开SDK Manager(仅闪烁一秒钟)
  • 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

7 个答案:

答案 0 :(得分: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

答案 1 :(得分:8)

YMMV,但另外编辑android.bat,如上一个答案中所述,我仍然无法让SDK Manager在Windows 8 64位上运行,直到我第一次:

  • 卸载所有版本的Java
  • 重新引导*
  • 仅安装X86 JDK(包括安装程序中的Public JRE选项)

我曾经尝试过所有这些以及更多以前的事情*没有重启,这是我运行SDK Manager的唯一方法。希望这些信息可以让您远离我经历的一些完全挫折和浪费的时间。屁股只是让工具开箱即用,真是太痛苦了。糟糕的经历。

我会回复对前一个答案的评论,但显然我没有足够的代表来做到这一点:https://meta.stackexchange.com/questions/25725/how-do-you-comment-on-a-specific-answer

编辑:下面有更完整的答案。 (我不认为重新启动与它有任何关系。)

似乎有几种方法可以启动SDK Manager:

    Android SDK根目录中的
  1. SDK Manager.exe
  2. 在Android SDK的SDK Manager.exe
  3. sdk\tools\lib
  4. Eclipse中的
  5. Window -> Android SDK Manager菜单
  6. 在Android SDK的android.bat
  7. sdk\tools
  8. 就我而言,看起来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\x86lib\x86_64文件夹中加载jar文件。在某些时候,BAT文件错误,32位JDK和64位Android SDK之间的事情变得混乱。

    SO ,我的解决方法是:

    1. 卸载所有版本的Java
    2. 安装JDK
      • 您可以使用32位Android SDK并安装32位JDK
      • 或使用64位Android SDK并安装64位JDK
      • 但JDK的“位数”应与Android SDK相匹配。似乎32位或64位中的任何一个都可以在64位计算机上运行,​​因为JDK位数与Android SDK位数相匹配。
    3. 编辑“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
        
    4. 执行此操作后,我可以通过运行android.bat或从Eclipse菜单运行SDK Manager(但仍然不能直接运行任何SDK Manager.exe文件)。

答案 2 :(得分:3)

在Windows 7上,至少,批量“FOR”循环在执行列表命令时,不使用当前工作目录,而是使用根目录。在这种情况下,命令是'%java_exe%-jar lib \ archquery.jar'。但是,它实际上是从根目录运行的,例如'C:\'。您可以通过命令行中的这个简单测试来看到这一点:

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

因此运行archquery的命令是查找相对于根目录而不是ADT目录的jar,因此无法找到。

答案 3 :(得分:2)

我有类似的问题,这就是解决方法。

  1. 在编辑器中打开android.bat的{​​{1}}文件。

  2. 找到

    \android-sdk-windows\tools

    并在此行前添加for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a

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

    < / LI>
  4. 保存文件。如果您打开一个cmd,请关闭它。导航到set swt_path=lib\x86_64并运行android。这应该打开SDK管理器。但是一定要在环境变量中定义android-sdk-windows\tools\,并且应该指向JDK home。

答案 4 :(得分: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?

答案 5 :(得分: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变量。

希望可以帮助别人。

答案 6 :(得分:0)

添加一个名为“ANDROID_SWT”的环境变量,指向包含swt.jar的目录,这对我有用。似乎是一个更好的选择,然后修改脚本。