Ram*_*ash 96 java macos javafx
有人可以告诉我在 Mac 上安装 Java 的步骤吗?
我做到了brew install java
我明白了
Warning: openjdk 17.0.1 is already installed and up-to-date.
To reinstall 17.0.1, run:
brew reinstall openjdk
Run Code Online (Sandbox Code Playgroud)
如果我执行 java -version,我会得到这个。
openjdk version "13.0.8" 2021-07-20
Run Code Online (Sandbox Code Playgroud)
如果我导航到/Library/Java,我有 2 个空目录。
java 17安装在哪里?
fre*_*dev 233
brew..brew install openjdk@17 \nRun Code Online (Sandbox Code Playgroud)\nJava 将安装在这里:
\n/usr/local/opt/openjdk@17/bin/java\nRun Code Online (Sandbox Code Playgroud)\n对于 Apple Silicon 来说,路径是/opt/homebrew/...而不是/usr/local/...
为了让系统 Java 包装器找到这个 JDK,请将其符号链接为:
\nsudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk\nRun Code Online (Sandbox Code Playgroud)\n分别。用于硅
\nsudo ln -sfn /opt/homebrew/opt/openjdk\\@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk\nRun Code Online (Sandbox Code Playgroud)\n现在,运行/usr/libexec/java_home -V应该显示 JAVA 17 的路径,如下所示:
17.0.9 (x86_64) "Homebrew" - "OpenJDK 17.0.9" /usr/local/Cellar/openjdk@17/17.0.9/libexec/openjdk.jdk/Contents/Home\nRun Code Online (Sandbox Code Playgroud)\n(顺便说一句,这就是你所缺少的,如果javac或javac --version没有给你一个 command-not-found 而是一个The operation couldn\xe2\x80\x99t be completed. Unable to locate a Java Runtime.)
如果您看到错误的版本,请检查路径设置是否JAVA_HOME正确。如果没有,您可以通过以下方式设置:
export JAVA_HOME=\\$(/usr/libexec/java_home)\nRun Code Online (Sandbox Code Playgroud)\nsdkman,这比brewcurl -s "https://get.sdkman.io" | bash\nRun Code Online (Sandbox Code Playgroud)\n然后打开一个新的 shell并尝试list看看可以安装什么;-)
sdk list java \nRun Code Online (Sandbox Code Playgroud)\n在撰写本文时,您可以使用:
\nsdk install java 17.0.4.1-tem\nRun Code Online (Sandbox Code Playgroud)\nJava 将安装在这里:
\n/Users/freedev/.sdkman/candidates/java/17.0.4.1-tem\nRun Code Online (Sandbox Code Playgroud)\n
rzw*_*oot 36
Java 不介意您安装多个版本。这通常是必需的;java 不向后兼容(它试图做很少的改变,但是例如 java8 到 java9 的转换破坏了很多东西,其中很多是不必要的,而且其中很多是库和应用程序无法合理预期或修复的,所以一堆 java 应用程序和库仅在 java8 上运行 - 只是一个示例)。
所以,是的,你已经安装了JDK17。另外,是的,如果你只是运行java而不指定你想要哪一个,那么你碰巧会在这里得到 java13。
要查看所有已安装的 java,您可以运行:
/usr/libexec/java_home -V
Run Code Online (Sandbox Code Playgroud)
要“覆盖”,您可以使用类似的内容(取决于您在 Mac 上使用的 shell):
export JAVA_HOME=`/usr/libexec/java_home -v 17`
Run Code Online (Sandbox Code Playgroud)
(反引号的意思是:运行它,然后获取它的输出并将其视为表达式的“值”。在这里,将其分配给 JAVA_HOME 环境变量。请求-v 17java 17 的路径。该-V选项列出了所有内容,用于您的眼球,而不是脚本。该-v选项主要用于脚本编写,这就是我们在这里使用它的方式)。
JAVA_HOME决定某些东西使用哪个 java,但是java当您键入时,您得到的java是/usr/bin/java,并且该可执行文件实际上只是一个包装器,它从所有已安装的版本中选择要运行的 java。它使用 JAVA_HOME 来决定实际运行哪个 java。所有常用命令都有包装器(javac也)。您始终可以运行例如which javac来查看实际运行的内容;你可能会看到/usr/bin/javac。其中的所有内容/usr/bin都是这些包装器事物之一,它查看 JAVA_HOME,然后运行它在那里找到的二进制文件。
Ehu*_*Lev 27
指定版本 17
brew install openjdk@17
Run Code Online (Sandbox Code Playgroud)
后来我添加创建一个链接:
sudo ln -sfn /usr/local/opt/openjdk@17/libexec/openjdk.jdk \
/Library/Java/JavaVirtualMachines/openjdk-17.jdk
Run Code Online (Sandbox Code Playgroud)
并使用jenv来控制使用哪个java版本
要使用 homebrew 安装的版本而不是操作系统安装的版本,您可以通过键入以下命令从 homebrew 获取详细信息
brew info java
Run Code Online (Sandbox Code Playgroud)
目前它指出
为了让系统 Java 包装器找到此 JDK,请使用 sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk 进行符号链接
openjdk 是仅 keg 的,这意味着它没有符号链接到 /opt/homebrew 中,因为 macOS 提供了类似的软件,并行安装该软件可能会导致各种麻烦。 如果您需要首先在 PATH 中安装 openjdk,请运行: echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrc 为了让编译器找到 openjdk,您可能需要设置:export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
对于 Homebrew,安装新 AdoptOpenJDK 的软件包被命名为 temurin。所以你需要使用以下命令:
brew install --cask temurin17
Run Code Online (Sandbox Code Playgroud)
如果您收到任何错误,例如 temurin cask not available,请使用以下命令更新brew:
brew update
brew tap homebrew/cask-versions
Run Code Online (Sandbox Code Playgroud)
要在不同版本的 java 之间快速切换,请根据您的 jdk 版本在 bashrc 中添加条目,例如:
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j17="export JAVA_HOME=`/usr/libexec/java_home -v 17`; java -version"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
205148 次 |
| 最近记录: |