2011-03-23 136 views
10

这是对SDK manager does not find java问题的后续处理,但现在的问题是SDK/android.bat未找到SWT文件。Android SDK/Android.bat未找到SWT.jar文件


我运行Windows 7 X64的,我的文件位置如下:

Android SDK (zip version) - C:\android-sdk-windows 

SWT.jar (from the Zip) - C:\android-sdk-windows\tools\lib\x86 
          C:\android-sdk-windows\tools\lib\x86_64 

JDK 6 u24 x64    - C:\Program Files\Java\jdk1.6.0_24 

我的环境变量如下:

ANDROID_SWT = C:\android-sdk-windows\tools\lib\x86_64 

Path  = ;C:\Program Files\Java\jdk1.6.0_24\bin 

我我正试图解决以下问题。

在执行Android SDK管理器时,黑色命令屏幕快速闪烁并消失,它不会启动SDK,因此我无法下载任何平台和附加组件。

请注意,我有这些文件已经从zip(广告平台和广告项)

我追查元凶的android.bat文件,但似乎无法弄清楚。我已经为SWT.jar文件设置了环境变量。
到目前为止,我没有以任何方式修改.bat文件。


以下是我的bat文件,错误位于底部附近。

@echo off 
rem Copyright (C) 2007 The Android Open Source Project 
rem 
rem Licensed under the Apache License, Version 2.0 (the "License"); 
rem you may not use this file except in compliance with the License. 
rem You may obtain a copy of the License at 
rem 
rem  http://www.apache.org/licenses/LICENSE-2.0 
rem 
rem Unless required by applicable law or agreed to in writing, software 
rem distributed under the License is distributed on an "AS IS" BASIS, 
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
rem See the License for the specific language governing permissions and 
rem limitations under the License. 

rem Useful links: 
rem Command-line reference: 
rem http://technet.microsoft.com/en-us/library/bb490890.aspx 

rem don't modify the caller's environment 
setlocal 

rem Set up prog to be the path of this script, including following symlinks, 
rem and set up progdir to be the fully-qualified pathname of its directory. 
set prog=%~f0 

rem Grab current directory before we change it 
set work_dir="%cd%" 

rem Change current directory and drive to where the script is, to avoid 
rem issues with directories containing whitespaces. 
cd /d %~dp0 


rem Check we have a valid Java.exe in the path. 
set java_exe= 
call lib\find_java.bat 
if not defined java_exe goto :EOF 

set jar_path=lib\sdkmanager.jar 

rem Set SWT.Jar path based on current architecture (x86 or x86_64) 
for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a 

if "%1 %2"=="update sdk" goto StartUi 
if not "%1"=="" goto EndTempCopy 
:StartUi 
echo [INFO] Starting Android SDK and AVD Manager 

rem We're now going to create a temp dir to hold all the Jar files needed 
rem to run the android tool, copy them in the temp dir and finally execute 
rem from that path. We do this only when the launcher is run without 
rem arguments, to display the SDK Updater UI. This allows the updater to 
rem update the tools directory where the updater itself is located. 

set tmp_dir=%TEMP%\temp-android-tool 
xcopy %swt_path% %tmp_dir%\%swt_path% /I /E /C /G /R /Y /Q > nul 
copy /B /D /Y lib\androidprefs.jar %tmp_dir%\lib\  > nul 
copy /B /D /Y lib\org.eclipse.*  %tmp_dir%\lib\  > nul 
copy /B /D /Y lib\sdk*    %tmp_dir%\lib\  > nul 
copy /B /D /Y lib\common.jar   %tmp_dir%\lib\  > nul 
copy /B /D /Y lib\commons-compress* %tmp_dir%\lib\  > nul 

rem jar_path and swt_path are relative to PWD so we don't need to adjust them, just change dirs. 
set tools_dir=%cd% 
cd /d %tmp_dir% 

:EndTempCopy 

rem The global ANDROID_SWT always override the SWT.Jar path 
if defined ANDROID_SWT set swt_path=%ANDROID_SWT% 

if exist %swt_path% goto SetPath 
    echo ERROR: SWT folder '%swt_path%' does not exist. 
    echo Please set ANDROID_SWT to point to the folder containing swt.jar for your platform. 
    goto :EOF 

:SetPath 
rem Finally exec the java program and end here. 
call %java_exe% -Dcom.android.sdkmanager.toolsdir="%tools_dir%" -Dcom.android.sdkmanager.workdir=%work_dir% -classpath "%jar_path%;%swt_path%\swt.jar" com.android.sdkmanager.Main %* 

rem EOF 

这是我所得到的在通过命令提示符下执行批处理文件

C:\Users\MuniFC Portable11>C:\android-sdk-windows\tools\android.bat 
[INFO] Starting Android SDK and AVD Manager 
'xcopy' is not recognized as an internal or external command, operable program or batch file. 
No command line parameters provided, launching UI. 
See 'android --help' for operations from the command line. 
java.lang.NullPointerException 
    at com.android.sdklib.internal.avd.AvdManager.parseAvdInfo(AvdManager.java:1205) 
    at com.android.sdklib.internal.avd.AvdManager.buildAvdList(AvdManager.java:1184) 
    at com.android.sdklib.internal.avd.AvdManager.<init>(AvdManager.java:385) 
    at com.android.sdkuilib.internal.repository.UpdaterData.initSdk(UpdaterData.java:238) 
    at com.android.sdkuilib.internal.repository.UpdaterData.<init>(UpdaterData.java:114) 
    at com.android.sdkuilib.internal.repository.UpdaterWindowImpl.<init>(UpdaterWindowImpl.java:86) 
    at com.android.sdkuilib.repository.UpdaterWindow.<init>(UpdaterWindow.java:42) 
    at com.android.sdkmanager.Main.showMainWindow(Main.java:302) 
    at com.android.sdkmanager.Main.doAction(Main.java:281) 
    at com.android.sdkmanager.Main.run(Main.java:99) 
    at com.android.sdkmanager.Main.main(Main.java:88)` 

如果您对如何解决这一问题的任何想法,将是真棒!


UPDATE

通过将C:\windows\system32到我的路径变量固定的xcopy问题,现在剩下的问题是SWT

命令提示符下运行 - Android.bat =

C:\Users\MuniFC Portable11>C:\android-sdk-windows\tools\android.bat 
[INFO] Starting Android SDK and AVD Manager 
No command line parameters provided, launching UI. 
See 'android --help' for operations from the command line. 
java.lang.NullPointerException 
     at com.android.sdklib.internal.avd.AvdManager.parseAvdInfo(AvdManager.java:1205) 
     at com.android.sdklib.internal.avd.AvdManager.buildAvdList(AvdManager.java:1184) 
     at com.android.sdklib.internal.avd.AvdManager.<init>(AvdManager.java:385) 
     at com.android.sdkuilib.internal.repository.UpdaterData.initSdk(UpdaterData.java:238) 
     at com.android.sdkuilib.internal.repository.UpdaterData.<init>(UpdaterData.java:114) 
     at com.android.sdkuilib.internal.repository.UpdaterWindowImpl.<init>(UpdaterWindowImpl.java:86) 
     at com.android.sdkuilib.repository.UpdaterWindow.<init>(UpdaterWindow.java:42) 
     at com.android.sdkmanager.Main.showMainWindow(Main.java:302) 
     at com.android.sdkmanager.Main.doAction(Main.java:281) 
     at com.android.sdkmanager.Main.run(Main.java:99) 
     at com.android.sdkmanager.Main.main(Main.java:88) 

C:\Users\MuniFC Portable11> 

回答

6

向PATH添加C:\windows\system32 xcopy错误消失后,但andro id.bat仍然存在swt.jar问题。删除ANDROID_SWT变量为我工作。

+0

非常感谢! :) – 2013-01-24 12:10:56

+0

谢谢,它也适用于我 – 2013-07-03 07:22:10

0

我曾经有同样的问题,清除AVD文件夹(虚拟设备的配置)为我工作...你应该尝试一下。接缝问题是一个腐败AVD,导致android.bat脚本解析时失败。

3

我和你有同样的问题。

最后,我通过重命名java和android sdk文件夹 而不使用空字符来清除此问题。

开始时, java安装在D:\Program Files\Java和 安卓SDK安装在D:\Program Files\Android

更改为D:\JavaD:\Android分别 添加D:\Java\jdk1.7.0_04\binPATH, 它出现。

0

只需从您的Windows配置文件文件夹中删除.android,它应该可以正常工作,因为它对我很有用。

-1

行,所以我有这个问题,以及环境变量,ANDROID_SWT = libx86_64和移动同时在Android和Java到c:\我也没在工作修复修改android.bat。

-1

我在windows 8.1 pro x64上运行Android Studio x64。随着JDK 8 x64安装。

我从Android Studio运行AVD的问题相同。下面是修复:

编辑系统环境变量...使用Windows搜索只需键入环境变量,它会打开编辑器。添加一个名为ANDROID_SWT的新系统变量。如果它已经在那里不需要添加另一个。将“变量值”设置为swt.jar所在的路径。我发现我通过:

C:.... \ Android的工作室\ SDK \工具\ LIB \ x86_64的\ SWT.JAR

我然后只需复制并粘贴该路径到新的(或现有的) ANDROID_SWT系统变量值。然后我按下OK保存新的系统变量,它是新值(这是swt.jar的路径),关闭并重新打开Android Studio并启动AVD!

希望这有助于

-1

试图打开'uiautomatorviewer.bat'时有同样的问题。要修复它,我添加了ANDROID_SWT环境变量,并且还将android_sdk/tools文件夹添加到了PATH

直到我重新打开CMD,我才看到变化。

-1

这解决了我的问题:上线27

find /i "x86" > NUL && set arch_ext=32 || set arch_ext=64 

删除空白arch_ext=32||之间,像arch_ext=32||,重新打开CMD

文件夹\sdk\tools\lib开放find_java.bat,和所有工具将工作正常。