如何检查Mac上是否安装了Java JDK?

ang*_*iwi 110 java macos

如何检查Mac上是否安装了Java SDK?

这有命令行吗?

小智 161

javac -version 在一个终端会做

  • 但是,如果未安装Java,则会出现一个对话框,告诉您需要安装Java,因此这不是脚本的好选择. (7认同)
  • `1.6` so jdk 6. (5认同)
  • 如果您收到“操作无法完成。无法找到 Java 运行时。请访问 http://www.java.com 以获取有关安装 Java 的信息。”,请访问 https://www.oracle.com/ java/technologies/javase-downloads.html 并下载 java jdk! (4认同)
  • 我得到“javac 1.6.0_37”是否相当于 jdk 6 或 7? (2认同)

Tux*_*ude 61

您可以利用java_home辅助二进制文件OS X来查找所需内容.

列出已安装JDK的所有版本:

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_51, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home
    1.7.0_79, x86_64:   "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

要请求特定JDK版本的JAVA_HOME路径,您可以执行以下操作:

$ /usr/libexec/java_home -v 1.7
/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home

$ /usr/libexec/java_home -v 1.8
/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

您可以在脚本中利用上述命令,如下所示:

REQUESTED_JAVA_VERSION="1.7"
if POSSIBLE_JAVA_HOME="$(/usr/libexec/java_home -v $REQUESTED_JAVA_VERSION 2>/dev/null)"; then
    # Do this if you want to export JAVA_HOME
    export JAVA_HOME="$POSSIBLE_JAVA_HOME"
    echo "Java SDK is installed"
else
    echo "Did not find any installed JDK for version $REQUESTED_JAVA_VERSION"
fi
Run Code Online (Sandbox Code Playgroud)

你也许可以做if-else并检查多个不同版本的java.

如果您更喜欢XML输出,java_home还有一个-X选项以XML格式输出.

$ /usr/libexec/java_home --help
Usage: java_home [options...]
    Returns the path to a Java home directory from the current user's settings.

Options:
    [-v/--version   <version>]       Filter Java versions in the "JVMVersion" form 1.X(+ or *).
    [-a/--arch      <architecture>]  Filter JVMs matching architecture (i386, x86_64, etc).
    [-d/--datamodel <datamodel>]     Filter JVMs capable of -d32 or -d64
    [-t/--task      <task>]          Use the JVM list for a specific task (Applets, WebStart, BundledApp, JNI, or CommandLine)
    [-F/--failfast]                  Fail when filters return no JVMs, do not continue with default.
    [   --exec      <command> ...]   Execute the $JAVA_HOME/bin/<command> with the remaining arguments.
    [-R/--request]                   Request installation of a Java Runtime if not installed.
    [-X/--xml]                       Print full JVM list and additional data as XML plist.
    [-V/--verbose]                   Print full JVM list with architectures.
    [-h/--help]                      This usage information.
Run Code Online (Sandbox Code Playgroud)


asg*_*oth 18

输入终端:

which javac
Run Code Online (Sandbox Code Playgroud)

它应该显示你的东西

/usr/bin/javac
Run Code Online (Sandbox Code Playgroud)

  • 答案为-1:路径中存在java命令并不能证明JDK已安装(但是JRE) (11认同)
  • 我同意。我可以运行“which java”或“which javac”,但在运行“java --version”时收到错误消息,因为未安装 JDK。 (2认同)
  • -1 这是完全错误的。默认情况下,所有 Mac 都带有 `javac` 垫片。与是否安装Java无关。 (2认同)

Mir*_*rez 10

下面的命令效果很好:

javac -version
Run Code Online (Sandbox Code Playgroud)

我还通过导航到 Mac 上的 Java 文件夹来手动验证

/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk
Run Code Online (Sandbox Code Playgroud)


小智 5

/usr/bin/java_home如果未安装 java,工具将返回 1。

所以你可以通过以下方式检查java是否安装:

/usr/libexec/java_home &> /dev/null && echo "installed" || echo  "not installed"
Run Code Online (Sandbox Code Playgroud)