如何修复android.bat(android sdk/tools)中的“找不到合适的Java”错误

3

我正在尝试设置android-sdk,但sdkmanager不会显示。

由于出现了这个错误提示,我检查了我的JAVA_HOME变量,它正确指向jdk安装目录:

如果我运行

echo %JAVA_HOME%

在命令提示符中,我得到以下内容:
C:\Program Files\Java\jdk-10.0.1

这是android.bat的输出结果。
C:\Android\sdk\tools>android.bat

ERROR: No suitable Java found. In order to properly use the Android Developer
Tools, you need a suitable version of Java JDK installed on your system.
We recommend that you install the JDK version of JavaSE, available here:
  http://www.oracle.com/technetwork/java/javase/downloads

If you already have Java installed, you can define the JAVA_HOME environment
variable in Control Panel / System / Avanced System Settings to point to the
JDK folder.

You can find the complete Android SDK requirements here:
  http://developer.android.com/sdk/requirements.html


C:\Android\sdk\tools>

据我所知,Android SDK需要Java 7或8。 - Robert
可能是Failed to run sdkmanager --list (Android SDK) with Java 9的重复问题。 - Martin Zeitler
4个回答

2
如果Java降级无效,请尝试以下方法
经过长时间的努力,我终于找到了问题所在。不确定这是否是有效的解决方法,但确实可以解决问题。
在最新版的Android Studio 3.4中,在C:\Users\username\AppData\Local\Android\Sdk\tools\lib\find_java.bat第44行,代码如下:
 for /f "delims=" %%a in ('"%~dps0\find_java%arch_ext%.exe" -s') do set java_exe=%a% 

如果你运行以下代码:
echo of %~dps0\find_java%arch_ext%.exe 这行代码应该会根据你的机器架构打印出 find_java32.exe 或 find_java64.exe 的路径,但它在最终的 find_java.exe 前面添加了 // 斜杠,导致出现问题。
所以我修改了它,让它看起来像下面这样,然后它就可以工作了:
"for /f "delims=" %%a in ('"%~dps0%find_java%arch_ext%.exe" -s') do set java_exe=%a%"
如果有更好的解决方案或者这个解决方案适用于你,请告诉我。

1

@Saravinfotech的答案对我没用,但它指引了我到正确的地方。双重\仍然为我调用了find_java64.exe,但运行它:

$ .\find_java64.exe -e
Failed to find Java 1.6 (or newer) on your system. [2] The system cannot find the file specified.

尽管java.exe在我的路径上,而且JAVA_HOME设置为我的oraclejdk\current文件夹。虽然不值得调试。

我只是用这些补丁修复了脚本:

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

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

脚本不再抱怨。


回顾一下,可能存在更大的问题。例如,monkeyrunner.bat 调用的是带有参数-Djava.ext.dirs 的 java.exe,而不是 JDK9 不支持的 -classpath,即使解决了这个问题,我仍然会遇到 NoClassDefFoundError。最近发布的 Java 14 版本似乎非常不兼容。 安装 JDK8 即可解决该问题。

1
我找到了一个解决方案,不需要降级到Java 8,因此,JRE有运行"uiautomatorviewer"的选项。
需要安装Android Studio并将以下位置添加到"路径"系统变量中。
C:\Program Files\Android\Android Studio\jre\bin

我有jdk-11.0.6,"uiautomatorviewer"可以正常工作。


我安装了jdk16,但仍然遇到了相同的错误。但是添加jre路径并将此路径移动到顶部帮助我解决了这个问题。 - Dodda Venkata

0
我的解决方法是安装Java 8并将所有Java路径更改为Java目录(C:\Program Files\Java\jre-1.8),然后设置JAVA_HOME环境变量。其他答案对我没有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接