Android SDK/Android.bat 找不到 SWT.jar 文件
这是问题 SDK manager does not find java 的后续问题,但现在的问题是 SDK/android.bat
找不到 SWT 文件。
我运行的是 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
这是我通过命令提示符执行 bat 文件时得到的结果
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)`
如果您知道如何解决此问题,那就太棒了!
更新
通过将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>
This is a follow-up to the issue SDK manager does not find java but the issue at hand now is the SDK/android.bat
does not locate the SWT file.
I'm running Windows 7 x64, my file locations are as follows:
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
My environment variables are as follows:
ANDROID_SWT = C:\android-sdk-windows\tools\lib\x86_64
Path = ;C:\Program Files\Java\jdk1.6.0_24\bin
I am trying to solve the following issue.
Upon execution of the Android SDK manager, a black command screen quickly flashes and disappears, it doesn't start the SDK therefore I cannot download any of the platforms nor add-ons.
Note that I have those files already from the zip (platforms and ad-ons)
I've traced the culprit to the android.bat
file but can't seem to figure it out. I've set the environment variable for the SWT.jar
file.
I didn't modify the .bat
file in any way so far.
The following is my bat file and the error is located near the bottom.
@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
This is what I get upon executing the bat file via command prompt
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)`
If you have any idea on how to fix this that would be awesome!
UPDATE
fixed the xcopy
issue by adding the C:\windows\system32
to my Path variables, now the remaining issue is the SWT
Command Prompt run - 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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
将
C:\windows\system32
添加到 PATH xcopy 错误消失后,但 android.bat 仍然存在 swt.jar 问题。删除 ANDROID_SWT 变量对我有用。After adding
C:\windows\system32
to PATH xcopy error is gone, but android.bat still had problem with swt.jar. RemovingANDROID_SWT
variable worked for me.我和你有同样的问题。
最后,我通过重命名 java 和 android sdk 文件夹解决了这个问题
没有空字符。
在开始时,
java 安装在
D:\Program Files\Java
中并且android sdk 安装在
D:\Program Files\Android
中。分别更改为
D:\Java
和D:\Android
并将
D:\Java\jdk1.7.0_04\bin
添加到PATH
,它出现了。
I have the same problem with you.
Finally, I clear this problem by rename the java and android sdk folder
without empty char.
At Begin,
java is installed in
D:\Program Files\Java
andandroid sdk is installed in
D:\Program Files\Android
.Change to
D:\Java
andD:\Android
respectively andadd
D:\Java\jdk1.7.0_04\bin
toPATH
,and it appear.
我曾经遇到过同样的问题,清除 avd 文件夹(虚拟设备的配置)对我有用......你应该尝试一下。接缝问题是一个损坏的 avd,导致 android.bat 脚本在解析它时失败。
I had the same problem once, and clearing the avd folder (config of the virtual devices) work for me...you should try it. Seams that the problem was a corrupt avd which cause the android.bat script to fail when parsing it.
好吧,我在环境变量 ANDROID_SWT=libx86_64 中也遇到了这个问题,并将 android 和 java 都移动到 c:\ 我也没有在工作修复中修改 android.bat 。
OK so I had this problem as well in environment variables, ANDROID_SWT=libx86_64, and move both android and java to c:\ I also didn't modify android.bat in the working fix.
我在 Windows 8.1 pro x64 上运行 Android studio x64。安装了 JDK 8 x64。
我在 Android Studio 中运行 AVD 时遇到了同样的问题。以下是修复方法:
编辑系统环境变量...使用 Windows 搜索只需键入环境变量,它将打开编辑器。添加一个名为 ANDROID_SWT 的新系统变量。如果已经有则无需添加另一个。将“变量值”设置为 swt.jar 所在的路径。我找到了我的via:
C:....\android-studio\sdk\tools\lib\x86_64\swt.jar
然后我只是将该路径复制并粘贴到新的(或现有的)ANDROID_SWT 系统变量值中。然后我按“确定”保存新的系统变量及其新值(这是 swt.jar 的路径),关闭并重新打开 Android Studio,AVD 启动!
希望这有帮助
I'm running Android studio x64 on windows 8.1 pro x64. With JDK 8 x64 installed.
I had the same issue running the AVD from Android Studio. Below is the fix:
Edit system environment variables... using windows search just type environment variables and it will open up the editor. Add a new system variable titled ANDROID_SWT. If it is already there no need to add another. Set the "variable value" to the path where the swt.jar is. I found my via:
C:....\android-studio\sdk\tools\lib\x86_64\swt.jar
I then just copied and pasted that path into the new (or existing) ANDROID_SWT system variables value. Then I pressed OK to save the new system variable and it's new value (which is the path to the swt.jar), closed and reopened Android Studio and the AVD started up!
Hope this helps
尝试打开
'uiautomatorviewer.bat'
时遇到同样的问题。为了修复这个问题,我添加了 ANDROID_SWT 环境变量,并将 android_sdk/tools 文件夹添加到了 PATH 中。直到重新打开 CMD 后我才看到更改。
Had the same problem when trying to open
'uiautomatorviewer.bat'
. To fix it I added theANDROID_SWT
environment variable and also added the android_sdk/tools folder to thePATH
.I didn't manage to see the change until I've reopened the CMD.
这解决了我的问题:
打开文件夹
\sdk\tools\lib
中的find_java.bat
,第 27 行。删除
arch_ext=32
之间的空白>和||
,如arch_ext=32||
,重新打开cmd,所有工具都可以正常工作。This solved my issue:
Open
find_java.bat
in the folder\sdk\tools\lib
, on line 27.delete the blank between
arch_ext=32
and||
, likearch_ext=32||
, reopen the cmd, and all tools will work fine.