【问题标题】:Unable to access jarfile lib\archquery.jar无法访问 jarfile lib\archquery.jar
【发布时间】:2012-06-07 05:50:46
【问题描述】:

问题:

  • 无法打开 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

【问题讨论】:

    标签: android sdk installation


    【解决方案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
    

    【讨论】:

    • OH GOD THANK YOU... 试图让 android SDK 运行一个多小时...
    【解决方案2】:

    YMMV,但除了编辑 android.bat,如上一个答案中所述,我仍然无法让 SDK 管理器在 Windows 8 64 位上运行,直到我首先:

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

    我已经尝试过所有这些方法,而且之前还尝试过更多 *没有重新启动,这是我让 SDK 管理器运行的唯一方法。希望这些信息可以使您免于经历我所经历的一些彻底的挫败感和浪费的时间。只是让工具开箱即用是多么痛苦。糟糕的经历。

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

    编辑:下面更完整的答案。 (我认为重启与此无关。)

    似乎有几种方法可以启动 SDK 管理器:

    1. SDK Manager.exe 在 Android SDK 的根目录中。
    2. Android SDK 的sdk\tools\lib 中的SDK Manager.exe
    3. Window -> Android SDK Manager Eclipse 中的菜单
    4. Android SDK 的sdk\tools 中的android.bat

    就我而言,看起来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 之间出现了混淆。

    所以,我的解决方法是:

    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
        

    完成此操作后,我可以通过运行 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的命令是寻找相对于根目录的jar,而不是你的ADT目录,因此找不到。

      【讨论】:

      • 我修复了我的 android.bar 以使用 archquery 的完整路径,利用了之前在批处理文件中设置的 %work_dir% 变量:for /f %%a in ('%java_exe% -jar %work_dir%\lib\archquery.jar') 设置 swt_path=lib\%%a
      【解决方案4】:

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

      1. 在编辑器中从\android-sdk-windows\tools 打开android.bat 文件。

      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 home。

      【讨论】:

        【解决方案5】:

        对 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?

        【讨论】:

          【解决方案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 的目录,这对我有用。似乎比修改脚本更好。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-04-12
              • 2013-09-27
              • 2018-12-17
              • 2022-12-05
              • 2012-04-04
              • 1970-01-01
              • 1970-01-01
              • 2018-11-07
              相关资源
              最近更新 更多