Android 无法访问jarlib\archquery.jar文件

Android 无法访问jarlib\archquery.jar文件,android,sdk,installation,Android,Sdk,Installation,问题: 无法打开SDK管理器(仅闪烁一秒钟) Eclipse中没有构建路径目标 路径: 环境变量: 错误: 我有一个类似的问题——我必须编辑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 YM

问题:

  • 无法打开SDK管理器(仅闪烁一秒钟)
  • Eclipse中没有构建路径目标

路径:


环境变量:


错误:


我有一个类似的问题——我必须编辑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

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

  • 已卸载所有版本的Java
  • 重新启动*
  • 仅安装X86 JDK(包括安装程序中的公共JRE选项)
我以前在没有重新启动的情况下尝试了所有这些方法,这是我运行SDK管理器的唯一方法。希望这些信息能让你免于我所经历的一些彻底的挫折和浪费的时间。把工具从盒子里拿出来真让人讨厌。糟糕的经历

我本来会对之前的回答作出评论,但显然我没有足够的代表来这么做:

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

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

  • Android SDK根目录中的
    SDK Manager.exe
  • Android SDK的
    SDK\tools\lib
    中的
    SDK Manager.exe
  • Eclipse中的
    窗口->Android SDK管理器
    菜单
  • 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\u to\u java]java”-jar lib\archquery.jar

    它成功返回:
    x86\u 64

    但是当批处理文件运行相同的命令时,我不知道为什么,但它失败了,并显示错误消息:

    Unable to access jarfile lib\archquery.jar
    
    因此变量
    swt_path
    被设置为空字符串。从那里一切都崩溃了

    批处理文件为变量
    java\u 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
    lib\x86\u 64
    文件夹加载jar文件。在某种程度上,人们开始混淆BAT文件错误、32位JDK和64位Android SDK

    因此在我的案例中,解决方法是:

  • 卸载所有版本的Java
  • 安装JDK
    • 您可以使用32位Android SDK并安装32位JDK
    • 或者使用64位Android SDK并安装64位JDK
    • 但JDK的“比特度”应该与Android SDK相匹配。似乎32位或64位都可以在64位计算机上工作,只要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\u 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管理器.exe文件)。

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

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

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

    对android.bat(下面)的更改为我解决了这个问题。我现在也可以从Eclipse启动SDK管理器了

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

    请看

    我也遇到过类似的问题,这就是解决问题的方法

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

  • 找到线路

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

  • 在下一行中添加
    set swt\u path=lib\x86
    (如果您使用的是32位系统)或
    set swt\u path=lib\x86\u 64
    (如果您使用的是64位系统)

  • 保存文件。如果有一个cmd打开,请关闭它。导航到
    android sdk windows\tools\
    并运行android。这将打开SDK管理器。但是请确保在您的环境变量中定义了
    JAVA\u HOME
    ,并且应该指向JDK HOME


  • 我通过替换:

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

    请注意,我对
    swt\u path
    变量使用了


    希望这能帮助其他人。

    添加一个名为“ANDROID\u SWT”的环境变量“指向保存swt.jar的目录,这对我来说是可行的。似乎是比修改脚本更好的选择。

    哦,上帝,谢谢你。。。试图让android SDK运行一个多小时…我修复了我的android.bar以使用archquery的完整路径,利用批处理文件中前面设置的%work\u dir%变量:for/f%%a in(“%java\u exe%%jar%work\u dir%\lib\archquery.jar”)do set swt\u path=lib\%a
    for /f "delims=" %%a in ('"%java_exe%" -jar %~dp0\lib\archquery.jar') do set swt_path=lib\%%a
    
    for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a
    
    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"