如何在MacOS上安装额外的java ?我安装了jdk8,运行正常。但是现在出于开发目的,我需要安装jdk7。当试图通过DMG文件安装旧版本时,我得到一个警告,已经安装了新的java版本,安装程序退出。
/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
1.8.0_20, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
除了这个,如何安装jdk7 ?
通过Homebrew安装Java的新命令:
安装adoptopenjdk/openjdk/adoptopenjdk8
安装adoptopenjdk/openjdk/adoptopenjdk11
有关最新的命令,请参阅homebrew-openjdk repo。
安装Java
您可以通过Homebrew、Jabba、SDKMAN或手动安装Java。有关所有命令的详细信息,请参阅此回答。
切换Java版本*
你可以用jenv Jabba, SDKMAN或手动切换Java版本。在这里查看所有切换命令的详细信息。
最好的解决方案
Jabba is designed to work on multiple platforms, so it's a good option if you want a solution that'll also work on Windows
Using Homebrew to download Java versions and jenv to switch versions provides a nice workflow. jenv makes it easy to work with Java versions stored in any directory on your machine, so it's a good alternative if you're interested in storing Java in non-default directories.
Using SDKMAN to download Javas and switch versions is another great alternative
Manually switching should be avoided because it's an unnecessary headache.
命令用于手动切换Java版本
下面是手动切换Java版本的Bash / ZSH函数(通过OpenJDK):
jdk() {
version=$1
export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
java -version
}
有很多很棒的工具可以切换Java版本,所以我强烈建议不要手动切换。
首先,您需要确保安装了多个JAVA版本。
打开一个新的终端窗口并输入:
/usr/libexec/java_home -V
你的输出应该是这样的:
Matching Java Virtual Machines (2):
11.0.1, x86_64: "Java SE 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
1.8.0_201, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
注意,有两个jdk可用。如果您没有注意到需要切换到的Java版本,请从https://www.oracle.com/java/technologies/downloads/下载并安装相应的版本
(JDK 8表示为1.8)。
安装了适当的JDK之后,重复此步骤。
注意要切换到的JDK版本。例如,“11.0”和“1.8”是上面示例中可用的JDK版本。
切换到所需的版本。例如,如果您希望切换到JDK 8,则输入如下一行:
export JAVA_HOME=/usr/libexec/ JAVA_HOME
对于11.0,将“1.8”转换为“11.0”
4. 输入Terminal检查JDK版本:
java -version
如果正确地执行了所有步骤,那么JDK版本应该与您在最后一步中指定的版本相关联。
5. (可选)要使其成为JDK的默认版本,在Terminal中输入以下内容:
open ~/.bash_profile
然后,将步骤3中的终端输入添加到这个文件中:
切换到Java版本8
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
保存并关闭文件。
我知道这个问题已经有很多答案,但我只想分享我的解决方案,只使用Temurin和bash。
AdoptOpenJdk已弃用,这就是我使用Temurin的原因。
1. 使用镜像或包管理器下载Temurin
$ brew install—桶铁尿
对于其他版本(如Java 8):
$ brew tap自制/桶装版本
$ brew install—桶temurin8
2. 将bash脚本添加到bash配置文件中
打开~/。ZSHRC或~/。Bash_profile(取决于您正在使用它)
并添加以下代码:
set-jdk() {
jdkversion=$1
export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-"$jdkversion".jdk/Contents/Home;
export PATH=$PATH:$JAVA_HOME/bin;
java -version
}
3.重新启动终端并更改Java版本
$ set-jdk N N是你想要的Java版本,并且已经安装好了
如。
$ set-jdk 8修改为Java 8 / 1.8
一些注意事项:
它只会在使用set-jdk命令的终端会话上保留Java版本
它不会将Java版本设置为全局
当您想要将JAVA_HOME添加到另一个脚本/应用程序中时,可以设置/Library/Java/JavaVirtualMachines/temurin-<version>。jdk/Contents/Home(更改为所需的Java版本。就像这个JD-GUI的例子)
享受
SDKMAN !是一个伟大的工具,使用多个版本的Java, Gradle, Groovy, Kotlin和其他JVM工具在Mac OS上。安装和使用文档很容易在主站找到。
(我没有隶属关系,只是一个快乐的用户)。
作为一个使用示例,如果我在终端窗口中输入以下内容,会有一个可用的Java SDK版本列表(为简洁起见,经过编辑):
$ sdk list java
Available Java Versions
+ 9ea170
> + 8u131
7u141-zulu
这里的+表示已安装的版本。>表示当前正在使用的版本。安装新版本:
$ sdk install java 7u141-zulu
要在此终端窗口中使用一个版本:
$ sdk use java 9ea170
要查找可用的Java版本:
brew search java
要安装最新的稳定版本(截至今天有19个):
brew info java
brew install java
为了让系统Java包装器(例如:ide)找到最新的JDK,可以将其与以下符号链接:
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
安装特定版本(11):
brew install java11
对于系统,Java包装器查找JDK 11:
sudo ln -sfn /opt/homebrew/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
您可以在PATH中拥有其中一个OpenJDK版本。在~/.bash_profile中添加下列行之一
export PATH="/opt/homebrew/opt/openjdk/bin:$PATH
export PATH="/opt/homebrew/opt/openjdk@11/bin:$PATH
然后,
source ~/.bash_profile