Android SDK/Android.bat 找不到 SWT.jar 文件

发布于 2024-10-26 02:11:23 字数 6776 浏览 1 评论 0原文

这是问题 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

千纸鹤带着心事 2024-11-02 02:11:23

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. Removing ANDROID_SWT variable worked for me.

淡紫姑娘! 2024-11-02 02:11:23

我和你有同样的问题。

最后,我通过重命名 java 和 android sdk 文件夹解决了这个问题
没有空字符。

在开始时,
java 安装在 D:\Program Files\Java 中并且
android sdk 安装在 D:\Program Files\Android 中。

分别更改为 D:\JavaD:\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 and
android sdk is installed in D:\Program Files\Android.

Change to D:\Java and D:\Android respectively and
add D:\Java\jdk1.7.0_04\bin to PATH,
and it appear.

浅紫色的梦幻 2024-11-02 02:11:23

我曾经遇到过同样的问题,清除 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.

我乃一代侩神 2024-11-02 02:11:23

好吧,我在环境变量 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.

幸福%小乖 2024-11-02 02:11:23

我在 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

银河中√捞星星 2024-11-02 02:11:23

尝试打开'uiautomatorviewer.bat'时遇到同样的问题。为了修复这个问题,我添加了 ANDROID_SWT 环境变量,并将 android_sdk/tools 文件夹添加到了 PATH 中。

直到重新打开 CMD 后我才看到更改。

Had the same problem when trying to open 'uiautomatorviewer.bat'. To fix it I added the ANDROID_SWT environment variable and also added the android_sdk/tools folder to the PATH.

I didn't manage to see the change until I've reopened the CMD.

此刻的回忆 2024-11-02 02:11:23

这解决了我的问题:

打开文件夹 \sdk\tools\lib 中的 find_java.bat,第 27 行。

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

删除 arch_ext=32 之间的空白>和||,如arch_ext=32||,重新打开cmd,所有工具都可以正常工作。

This solved my issue:

Open find_java.bat in the folder \sdk\tools\lib, on line 27.

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

delete the blank between arch_ext=32 and ||, like arch_ext=32||, reopen the cmd, and all tools will work fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文