如何在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 ?


当前回答

我知道这个问题已经有很多答案,但我只想分享我的解决方案,只使用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的例子)


享受

其他回答

在这个网站上可以找到 让我们从安装jEnv开始

Run this in the terminal brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb Add jEnv to the bash profile if which jenv > /dev/null; then eval "$(jenv init -)"; fi When you first install jEnv will not have any JDK associated with it. For example, I just installed JDK 8 but jEnv does not know about it. To check Java versions on jEnv At the moment it only found Java version(jre) on the system. The * shows the version currently selected. Unlike rvm and rbenv, jEnv cannot install JDK for you. You need to install JDK manually from Oracle website. Install JDK 6 from Apple website. This will install Java in /System/Library/Java/JavaVirtualMachines/. The reason we are installing Java 6 from Apple website is that SUN did not come up with JDK 6 for MAC, so Apple created/modified its own deployment version. Similarly install JDK7 and JDK8. Add JDKs to jEnv. JDK 6: JDK 7: JDK 8: Check the java versions installed using jenv So now we have 3 versions of Java on our system. To set a default version use the command jenv local <jenv version> Ex – I wanted Jdk 1.6 to start IntelliJ jenv local oracle64-1.6.0.65 check the java version java -version

就是这样。我们现在有多个版本的java,我们可以很容易地在它们之间切换。jEnv还有其他一些特性,比如Gradle、Ant、Maven等的包装器,以及全局或本地设置JVM选项的能力。有关更多信息,请查看文档。

我使用的是Mac OS X 10.9.5。这就是当我需要一个版本运行应用程序A,而应用程序B使用另一个版本时,我如何在我的机器上管理多个JDK/JRE。

我在网上得到一些帮助后创建了以下脚本。

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

I put the above script in .profile file. Just open terminal, type vi .profile, append the script with the above snippet and save it. Once your out type source .profile, this will run your profile script without you having to restart the terminal. Now type java -version it should show 1.7 as your current version. If you intend to change it to 1.8 then comment the line setjdk jdk1.7.0_15.jdk and uncomment the line setjdk jdk1.8.0_60.jdk. Save the script and run it again with source command. I use this mechanism to manage multiple versions of JDK/JRE when I have to compile 2 different Maven projects which need different java versions.

通过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版本,所以我强烈建议不要手动切换。

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

与@Vegard(轻量级)的精神相同:

用Homebrew安装所需的jdk 把这个jdk bash函数和一个默认值放在你的.profile中 jdk () { version = 1美元 export JAVA_HOME=$(/usr/libexec/ JAVA_HOME -v"$version"); java - version } export JAVA_HOME=$(/usr/libexec/ JAVA_HOME -v11);#默认版本 然后,你可以切换你的jdk jdk 9 jdk 11 jdk 13

基于https://github.com/AdoptOpenJDK/homebrew-openjdk。