11

我安装了 Android SDK 但我无法使用它,因为 AVD 和 SDK 管理器没有运行。当我尝试打开其中任何一个时,命令提示符窗口会弹出大约半秒,然后关闭。我尝试从命令提示符运行 exe 以查看是否有错误消息但没有输出并且它的行为相同。我研究了这个问题,发现其他计算机也发生了同样的事情。我尝试了那里发布的一些解决方案:

似乎不起作用的解决方案

  • 将 JDK 位置添加到PATH环境变量的开头
  • 将 Android SDK 位置添加到PATH环境变量
  • 以管理员身份运行应用程序
  • .android从用户 ( C:/Users/[User Name]) 目录中删除文件夹
  • 在驱动器的根目录中安装C:,而不是在 Program Files 中

操作系统信息:Windows 7 Home Premium,管理员权限


更新

我想我找到了问题的根源,但我仍然不知道如何解决它。问题似乎与我android.batC:\Android\android-sdk\tools目录中的文件有关。它尝试调用find_java.bat但由于一个小的语法问题而无法调用。这是输出:


'C:\Android\ANDROI~1\tools\lib\find_java.exe -s' 不是内部或外部命令、可运行程序或批处理文件。

错误:未找到合适的 Java。为了正确使用 Android 开发者工具,您需要在系统上安装合适版本的 Java JDK。我们建议您安装 JavaSE 的 JDK 版本,可在此处获得: http ://www.oracle.com/technetwork/java/javase/downloads

您可以在此处找到完整的 Android SDK 要求:http: //developer.android.com/sdk/requirements.html


在对 进行一些修改后android.bat,我能够让它调用find_java.bat,无论我对它做了什么,它都会得到一堆错误。我终于感到沮丧,并决定在java.exe. 后来在批处理文件中还有另一个错误。我开始认为我的安装或批处理文件确实有问题。这是批处理文件 ( android.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;lib\swtmenubar.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

:MkTempCopy
    rem Copy android.bat and its required libs to a temp dir.
    rem This avoids locking the tool dir in case the user is trying to update it.

    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
    copy /B /D /Y lib\swtmenubar.jar     %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\commons-logging*   %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\commons-codec*     %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\httpclient*        %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\httpcore*          %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\httpmime*          %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.
REM set REMOTE_DEBUG=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
call %java_exe% %REMOTE_DEBUG% -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

更新(再次)

我在 virtualbox 中运行的 WinXP 上安装了 Android SDK,它运行良好。不过我还是希望能在 Win7 上使用它。

4

13 回答 13

8

这就是我让它在 Windows 8 上工作的方式

  1. 添加 JAVA_HOME 环境变量并将其设置为您的 java 安装位置(即C:\Program Files (x86)\Java\jdk1.6.0_39\bin

  2. 接下来编辑 C:\Users{YOUR USERNAME}\AppData\Local\Android\android-sdk\tools\android.bat 找到该set java_exe= call lib\find_java.bat行并将其更改为 set java_exe=java.exe

  3. 保存文件,它应该运行

请注意,如果您收到有关 swt 位置的错误,只需硬编码路径即可。将其设置为 lib\x86 或 lib\x86_64

希望这可以帮助

于 2013-05-03T03:56:15.280 回答
5

我安装了新的 x64 版本的 JDK 并解决了我的问题

于 2012-12-01T10:04:46.187 回答
3

我在全新安装 64 位 win 7 pro、使用和全新安装 64 位 JDK 时遇到了这个问题。

Kenton Price 在这篇文章中的解决方案解决了我的问题,现在一切正常。

Android SDK安装找不到JDK

出于某种原因,我系统上的(最初是 linux 开发的)ADK 需要使用 linux 风格的正斜杠而不是 windows 风格的反斜杠定义的 JAVA_HOME。

于 2012-06-13T23:38:26.133 回答
2

我发现 Rajesh 从他上面的评论中发现了同样的问题。此行括号中的命令未执行

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

编辑:有些人可能有这一行: for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s') do set java_exe=%%a

这一行来自sdkfind_java.battools\lib\目录。

我有一个 Win 7 x64 系统,我不打算重新加载整个操作系统,所以我硬编码了 MZB 从他上面的帖子中建议的内容:

在这一行之后:

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

编辑:或这一行:

for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s') 设置 java_exe=%%a

我添加了这一行:

set java_exe=%JAVA_HOME%\bin\java.exe

这假设您已将 JAVA_HOME 环境变量设置为 Java JDK 文件夹(不带\bin

如果您的 JAVA_HOME 变量包含 ,\bin则将其设置如下:

set java_exe=%JAVA_HOME%\java.exe

如果您没有设置 JAVA_HOME 环境,那么您需要使用您机器上的实际路径对其进行硬编码,就像 MZB 在他的帖子中所做的那样。

我也为 javaw 逻辑做了它:

set javaw_exe=%JAVA_HOME%\bin\javaw.exe

我终于可以访问 SDK 管理器了。


2015 年 6 月 1 日更新:

致在我提交这篇文章后更新了这篇文章的 Ken YN:

当我创建这篇文章时,我引用了这一行:

for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s') 设置 java_exe=%%a

这在我当前的 find_java.bat 文件夹 ...\sdk\tools\lib 中,我昨天刚刚从当前版本的 Android Studio Windows x64 版本(android-studio-bundle-141.1903250-windows.exe)更新。变量 %arch_ext% 将在其中包含 32 或 64,具体取决于它们拥有的系统。

但我不知道上面的行是如何转换为:

对于 /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') 设置 swt_path=lib\%%a

在 Ken YN 进行编辑之后。

但也许有些人在他们的 find_java.bat 文件中有你的版本,但我相信有些人像我一样有另一个。我只是为那些无法打开 SDK 管理器的人指出这一点。

另外我应该提到我在 JDK1.7 和 JDK1.8 上都有这个问题。本来是装JDK1.8的,昨天看Android Studio的需求,说需要JDK1.7,所以昨晚装了JDK1.7,以为可以解决我的问题,但是find_java.bat的问题是一样的使用任一版本的 JDK。

我还应该指出,当我用两个版本的 JDK 安装 Android Studio 时,我最初能够在第一次打开 Android Studio 之前访问 SDK 管理器。但是当我打开 Android Studio 时,它首先开始更新 SDK 管理器,也许这就是问题发生的时候,因为在启动一个 IDEA 项目后,我无法打开 SDK 管理器。

所以也许 find_java.bat 在第一次打开 Android Studio 之前有这一行:

对于 /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') 设置 swt_path=lib\%%a

而当 Adroid Studio 更新 SDK 时,它有这条线吗?

for /f "delims=" %%a in ('"%~dps0find_java%arch_ext%.exe" -s') 设置 java_exe=%%a

我没有时间测试它——我已经浪费了很多时间试图弄清楚如何访问 SDK。如果他们遇到同样的问题,也许其他人可以确认这一点。

于 2015-06-01T06:14:53.460 回答
1

我也有同样的问题,无法打开 Android SDK 管理器,但是通过从用户(C:/Users/[用户名])目录中删除 .android 文件夹,它可以工作......

谢谢

于 2013-02-06T07:09:39.323 回答
1

我刚刚遇到了与 loplateral98 类似的问题,并在这里尝试了所有解决方案,但没有结果。然后我记得我必须先添加一个环境变量来定位java,然后才能让android studio首先启动,所以我只是尝试添加一个新的系统变量Android_home并将其定向到我的android文件夹C:\Program Files (x86)\Android。就像我在设置 java 时所做的那样,然后它启动时没有问题。SDK 管理器也已启动并正在工作。如果您仍然遇到问题,我希望这会有所帮助

这是我在设置 java 部分时发现的,只是想我也可以尝试一下 android。

在某些 Windows 系统上,启动器脚本找不到 Java 的安装位置。如果遇到此问题,则需要设置一个环境变量来指示正确的位置。

选择开始菜单 > 计算机 > 系统属性 > 高级系统属性。

然后打开并添加一个指向 JDK 文件夹Advanced tab > Environment Variables的新系统变量,例如JAVA_HOME

C:\Program Files\Java\jdk1.7.0_21。

于 2014-02-20T04:24:10.467 回答
0

不要删除 .android 文件夹。Juz 删除 .android 文件夹中的 avd 文件夹。它会对你的工作有很大的帮助。

提前欢呼。普拉卡什。

于 2013-02-13T06:26:07.377 回答
0

我有这个问题,问题原来是这样的:

D:\dev\adt-bundle-windows-x86_64-20130522\sdk>"tools\lib\find_java.exe"
C:\Windows\system32\java.exe

我隐约记得很久以前有一个程序发现 Java 并将其复制到 system32 目录以“解决”它的问题。

我删除了这些文件,现在:

D:\dev\adt-bundle-windows-x86_64-20130522\sdk>"tools\lib\find_java.exe"
C:\Program Files\Java\jre7\bin\java.exe

SDK/ADK 管理器现在可以正常运行。

于 2013-06-17T15:30:31.497 回答
0

我在我的 windows-8 64 位机器上遇到了同样的问题。将问题缩小到 find_java.bat 文件中的特定语句 for /f "delims=" %%a in ('"%~dps0\find_java.exe" -s') do set java_exe=%%a

由于某种原因,括号中的语句没有作为命令执行。我尝试了上面所有建议的解决方案,但都没有奏效。最后发现这个特定的语句在另一台 Windows 8 64 位机器上运行良好,所以我的 Windows 8 安装存在一些问题。我检查了我的操作系统系统文件,发现其中一些文件已损坏,因此我修复了我的 Windows 8 安装,之后一切正常。

于 2013-10-04T11:32:32.767 回答
0

如果问题出在 Windows 机器上,则只需以管理员身份运行 AVD 管理器或 SDK 管理器

于 2014-03-26T05:39:49.960 回答
0

\tools\lib\find_java.bat 可能存在问题,无法成功确定 java.exe 和 javaw.exe 可执行文件的位置。

这里的解决方法:http : //www.gmansoft.com/android-sdk-manager-find-java-problem/ 为我工作。请注意,如果您“修复” android.bat 中的问题,其他批处理文件仍然会损坏。

如果上述链接中断,解决方法是硬连线 find_java.bat 的结果以返回 java 可执行文件的实际位置。例如将其编辑为:

rem Check we have a valid Java.exe in the path. The return code will
rem be 0 if the command worked or 1 if the exec failed (program not found).
rem for /f "delims=" %%a in ('"%~dps0\find_java%arch_ext%.exe" -s') do set java_exe=%%a
set java_exe=c:\program files\Java\jdk1.8.0_25\bin\java.exe
if not defined java_exe goto :CheckFailed

:SearchJavaW
rem Check if we can find a javaw.exe at the same location than java.exe.
rem If that doesn't work, just fall back on the java.exe we just found.
rem for /f "delims=" %%a in ('"%~dps0\find_java%arch_ext%.exe" -s -w') do set javaw_exe=%%a
set javaw_exe=c:\program files\Java\jdk1.8.0_25\bin\javaw.exe
if not exist "%javaw_exe%" set javaw_exe=%java_exe%
goto :EOF
于 2014-12-09T22:28:35.540 回答
0

升级工作环境时,我遇到了同样的问题。问题出在<AndroidSDK>\tools\lib\find_java.bat(感谢指向此文件的任何人)。它搜索 64 位版本的 Java,而我安装了 32 位版本。简单而肮脏set arch_ext=32find_java.bat解决了我的问题。

于 2014-12-23T09:11:33.610 回答
0

我在 Windows 8.1 上遇到了同样的问题,通过以管理员身份运行 Android Studio 解决了这个问题

于 2015-06-29T23:11:33.073 回答