如何为Android Studio设置JDK?

我无法为Android 2.1编译一个默认的新项目,因为Android Studio使用的JDK是JDK 1.7,但应该是JDK 1.6。
要更改它,我进入"文件"->"项目结构",然后尝试找到JDK 1.6的位置。
但是当我选择其目录并按下"确定"时,我会收到以下错误提示:
请选择一个有效的JDK目录。

Please choose a valid JDK directory

如您在截图中所见,我正在尝试将Java 6 OpenJDK 64位设置为新的JDK。
我该怎么办呢?Android Studio是否与OpenJDK兼容,还是应该使用Oracle JDK呢?

你有试过bin文件夹吗? - Louis Matthijssen
我尝试了:./bin | ./jre | ./jre/bin 对于所有的情况都是同样的消息。 - Lucio
1对我来说,我只需要使用目录结构中/jre上面的文件夹,所以我的路径是/usr/lib/jvm/java-8-oracle而不是/usr/lib/jvm/java-8-oracle/jre。我原以为路径应该以/jre结尾,因为默认路径("嵌入式"JDK)是这样的,但事实证明,如果你去查看默认文件夹,它是一个名为"jre"的文件夹,其中包含另一个名为"jre"的文件夹 - Jack M
8个回答

我正在使用带有Android Studio的OpenJDK 7,而且它运行得非常好。(目前我甚至没有安装Oracle JDK。)

在你展示的那个屏幕上(项目结构->SKD位置),我的路径如下:/usr/lib/jvm/java-1.7.0-openjdk-amd64


通过检查 studio.sh,您还可以设置其中一个 STUDIO_JDKJDK_HOMEJAVA_HOME 环境变量来指向 JDK 的位置。

studio.sh 按顺序检查 STUDIO_JDKJDK_HOMEJAVA_HOME 环境变量。

if [ -n "$STUDIO_JDK" -a -x "$STUDIO_JDK/bin/java" ]; then
  JDK="$STUDIO_JDK"
elif [ -n "$JDK_HOME" -a -x "$JDK_HOME/bin/java" ]; then
  JDK="$JDK_HOME"
elif [ -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then
  JDK="$JAVA_HOME"

所以你只需将它们适当地设置好,然后工作室就会自动识别。

这对于Windows也适用。如果你的JAVA_HOME中默认安装了DCEVM,而它与Android Studio不兼容,那么这个方法非常有用。 - Mateus Viccari

似乎Android Studio无法识别OpenJDK,所以我需要安装OracleJDK
然后我选择了Oracle JDK的路径,它就正常工作了!

我已经安装了它,但是无法设置它的路径变量。你能告诉我怎么做吗? - Nitesh Verma
1是的,首先确保java -version正确输出你的Java版本。然后,在AS窗口中选择/usr/lib/jvm/jdk1.8.0/。那时对我来说已经足够了 :-) - Lucio
在充分考虑之后才应该进行此操作:这涉及到巨大的法律影响,因为Oracle以相当令人惊讶的方式改变了他们的许可条款。通常情况下,在商业环境中您不再希望使用Oracle Java。 - arkascha

这对我有用:
  1. 找到Java目录:

    $ echo $JAVA_HOME
    /usr/lib/jvm/java-7-oracle
    
  2. 打开Android Studio,然后选择文件->项目结构。

  3. SDK位置下,我将上面的Java目录粘贴进去
  4. 等待几秒钟,我得到了"0个错误 0个警告"
成功了!:)

我遵循的步骤:
1. 打开终端并输入echo $JAVA_HOME 2. 复制终端中显示的路径 - 在Ubuntu终端中使用Ctrl+Shift+C复制 3. 在Android Studio中,进入项目结构,粘贴复制的路径 4. 等待软件识别和更新设置 5. 这样解决了无效的JDK设置问题

如果您在./bin文件夹下有一个JDK和Android Studio,您可以在终端运行studio.sh之前设置STUDIO_JDK变量:
STUDIO_JDK=./bin/jdk/ ./bin/android-studio/bin/studio.sh

我解决了这个问题。 我使用的是AS 2.1和JDK1.7,但某些功能要求我更新到JDK1.8。我下载了Java安装文件。可能我只安装了JRE而没有安装JDK,所以AS一直警告我“请选择有效的JDK目录”。 所以我猜测提问者的问题和我一样,你应该安装JDK而不是JRE。

我觉得你可能在其他地方安装了jdk,比如"/usr/local/java"这样的位置。在我的情况下,我也在你截图中显示的目录中看到了相同的文件夹名字。
所以只需检查jdk是否存在于其他地方。