无法访问jarfile lib \ archquery.jar

问题:

  • 无法打开SDKpipe理器(仅闪烁一秒)
  • Eclipse中没有构buildpath目标

path:

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) 

环境variables:

 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 

Solutions Collecting From Web of "无法访问jarfile lib \ archquery.jar"

我有一个类似的问题 – 我不得不编辑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 Manager在Windows 8 64位上运行,直到我第一次:

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

我已经尝试了所有这些,以前更多*无需重新启动,这是我得到SDKpipe理器运行的唯一方法。 希望这个信息可以让你免受一些完全的挫折和浪费的时间。 只是为了让工具从盒子里跑出来,真是一场痛苦。 可怕的经历。

我会回答作为对以前的答案的评论,但显然我没有足够的代表这样做: https : //meta.stackexchange.com/questions/25725/how-do-you-comment-on-a特异性应答

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

似乎有几种启动SDKpipe理器的方法:

  1. Android SDK的根目录中的SDK Manager.exe
  2. Android SDK中sdk\tools\lib中的SDK Manager.exe
  3. Window -> Android SDK Manager Eclipse中的Window -> Android SDK Manager菜单
  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

但是,当batch file运行相同的命令,我不知道为什么,但失败,错误消息:

 Unable to access jarfile lib\archquery.jar 

所以variablesswt_path被设置为一个空string。 一切都从那里破裂。

batch file为variablesjava_exe设置正确的值。 其他人通常都把这个问题作为一个问题,但是这些解决方法与我无关。

人们build议通过将REM添加到开头,然后添加一行来手动设置swt_pathvariables,这是一个有效的解决方法:

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

但是 ,在我的情况下,关键问题是它select从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的“bitness”应该与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 Manager(但仍不能直接运行任何SDK Manager.exe文件)。

在Windows 7上,至less执行批处理“FOR”循环时,执行列表命令时,不会使用当前工作目录,而是使用根目录。 在这种情况下,命令是'%java_exe%-jar lib \ archquery.jar'。 但是,它有效地从根目录运行,例如“C:\”。 你可以从命令行通过这个简单的testing来看到这个:

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

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

我有类似的问题,这是如何解决的。

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

  2. find线路

     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. 保存文件。 closurescmd,如果你有一个打开。 导航到android-sdk-windows\tools\并运行android。 这应该打开SDKpipe理器。 但一定要在您的环境variables中定义JAVA_HOME ,并指向JDK主页。

这个更改为android.bat(下)修复了我的问题。 我现在也可以从Eclipse启动SDKpipe理器。

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

请参阅%〜dp0是什么意思,它是如何工作的?

我解决了这个问题,换成:

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

希望可以帮助别人。

添加一个名为“ANDROID_SWT”的环境variables指向保存swt.jar的目录得到了这个为我工作。 看起来像一个更好的select,然后修改脚本。