当前位置: 首页 > 面试题库 >

如何在Mac OSX上安装Java以允许版本切换?

壤驷华辉
2023-03-14
问题内容

我想在Mac OSX上安装OpenJDK
Java,并使其与其他JDK一起工作,因为它是较新的版本。当前,我下载了tar.gz并将其放置在我的路径中,但这很难维护。

我发现唯一可以自动执行更多操作的其他安装是通过Homebrew cask进行的安装。看起来也只有当前版本:

brew cask info java

显示:

Java:13,33:5b8a42f3905b406298b72d750b6919f6
https://openjdk.java.net/

所以我可以从那里安装它,那又如何呢?我只停留在新版本上吗?


问题答案:

注意: 这些解决方案适用于Java的各种版本,包括Java 8和新的Java 13,以及所列版本管理器涵盖的任何其他以前的Java版本。
这包括来自OpenJDK,Oracle,IBM,Azul,Amazon Correto,Graal等的替代JDK。轻松使用Java 7,Java
8,Java 9,Java 10,Java 11,Java 12和Java 13!

您可以选择几种方法来进行安装以及管理JDK切换。可以通过Homebrew,SDKMAN,Jabba或手动安装来完成安装。可以通过JEnv,SDKMAN,Jabba进行切换,也可以通过设置手动进行切换JAVA_HOME。所有这些都在下面描述。

首先,使用您喜欢的任何方法(包括Homebrew,SDKMAN或手动安装tar.gz文件)安装Java。手动安装的优点是可以将JDK的位置放在Mac
OSX的标准位置。

使用SDKMAN安装

这是一个简单的模型,它可以处理安装和版本切换,但需要注意的是它将JDK安装到非标准目录中。

< 参见下面的“使用SDKMAN安装和切换版本” >

使用Jabba安装

这也是一个简单的模型,因为安装和版本切换均由同一工具处理。将安装到非标准目录中。

< 参见下面的“使用Jabba安装和切换版本” >

从OpenJDK下载页面手动安装:

  1. 从http://jdk.java.net/下载适用于Mac OSX的OpenJDK (例如Java 13)

  2. 取消存档OpenJDK tar,并将生成的文件夹(即jdk-13.jdk)放入您的/Library/Java/JavaVirtualMachines/文件夹,因为这是JDK安装的标准位置。您也可以在现实中想要的任何地方安装。

用自制软件安装

2018年10月3日之前在Homebrew Cask中可用的Java版本确实是Oracle
JVM。但是,现在它已更新为OpenJDK。确保更新Homebrew,然后您将看到可用于安装的最新版本。

  1. 如果尚未安装Homebrew,请先安装。确保已更新:

     brew update
    
  2. 如果您还没有的话,请添加木桶水龙头(或者在步骤#3中不再看到较旧的Java版本):

     brew tap homebrew/cask-versions
    

对于AdoptOpenJDK版本,添加该水龙头:

     brew tap adoptopenjdk/openjdk

这些木桶经常更改其Java版本,并且可能还会有其他带有其他Java版本的水龙头。

  1. 寻找可安装的版本:
     brew search java
    

或对于AdoptOpenJDK版本:

     brew search jdk
  1. 检查有关将安装的版本的详细信息:
     brew cask info java
    

或对于AdoptOpenJDK版本:

     brew cask info adoptopenjdk
  1. 安装JDK的特定版本,例如java11adoptopenjdk8或者只是javaadoptopenjdk当前。例如:
     brew cask install java
    

您也可以使用旧版本的完全限定路径:

     brew cask install homebrew/cask-versions/java11

这些将安装/Library/Java/JavaVirtualMachines/在Mac OSX上的传统位置。

其他安装选项:

openJDK的其他一些风格是:

可以按照
其站点上的说明安装
Azul Systems Java Zulu 认证的OpenJDK构建

Zulu®是OpenJDK的经过认证的版本,完全符合Java
SE标准。Zulu是100%开放源代码,可免费下载。现在,Java开发人员,系统管理员和最终用户可以享受开放源Java的全部好处,并且具有部署灵活性并可以控制升级时间。

Amazon Correto
OpenJDK构建具有易于使用的版本8或版本11(即将推出其他版本)的安装软件包,并且可以安装到/Library/Java/JavaVirtualMachines/Mac
OSX上的标准目录中。

Amazon Corretto是Open Java Development
Kit(OpenJDK)的免费,多平台,可立即投入生产的发行版。Corretto带有长期支持,其中包括性能增强和安全修复。亚马逊内部在数千种生产服务上运行Corretto,Corretto被证明与Java
SE标准兼容。使用Corretto,您可以在流行的操作系统(包括Linux,Windows和macOS)上开发和运行Java应用程序。

我的JDK在哪里?!?!

要查找默认系统位置上安装的先前安装的Java JDK的位置,请使用:

/usr/libexec/java_home -V

匹配的Java虚拟机(6):
13,x86_64:“ OpenJDK 13”
/Library/Java/JavaVirtualMachines/openjdk-13.jdk/Contents/Home 12,x86_64:“
OpenJDK 12” / Library / Java / Java / JavaVirtualMachines / jdk-12 .jdk /
Contents / Home
11,x86_64:“ Java SE 11
” /库/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home 10.0.2,x86_64:“ Java
SE 10.0.2” / Library / Java / JavaVirtualMachines
/jdk-10.0.2.jdk/Contents/Home
9,x86_64:“ Java SE 9”
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
1.8.0_144,x86_64:“ Java SE 8” / Library
/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

您也可以使用来报告特定Java版本的位置-v。例如对于Java 13:

/usr/libexec/java_home -v 13

/图书馆/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

当使用JEnv之类的工具,将本地安装添加到SDKMAN或在Jabba中链接系统JDK时,知道已安装JDK的位置也很有用,而且您需要知道在哪里可以找到它们。

如果您需要查找其他工具安装的JDK,请检​​查以下位置:

  • SDKMAN安装到 ~/.sdkman/candidates/java/
  • Jabba安装到 ~/.jabba/jdk

手动切换版本

Java可执行文件是一个包装程序,将使用中配置的JDK进行包装JAVA_HOME,因此您可以对其进行更改以更改所使用的JDK。

例如,如果您安装或解压缩了JDK
13,/Library/Java/JavaVirtualMachines/jdk-13.jdk使其为最高版本号,则它应该已经是默认版本号;如果不是,则可以简单地进行设置:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

现在,路径中的任何Java可执行文件都将看到此内容并使用正确的JDK。

/usr/libexec/java_home如前所述,使用该实用程序可以帮助您创建别名或运行命令以通过识别不同JDK安装的位置来更改Java版本。例如,在中创建外壳别名.profile或为您.bash_profile更改JAVA_HOME

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_12_HOME=$(/usr/libexec/java_home -v12)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
alias java10='export JAVA_HOME=$JAVA_10_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java12='export JAVA_HOME=$JAVA_12_HOME'
alias java13='export JAVA_HOME=$JAVA_13_HOME'

# default to Java 13
java13

然后,要更改版本,只需使用别名。

java8
java -version

Java版本“ 1.8.0_144”

当然,JAVA_HOME手动设置也可以!

使用JEnv切换版本

JEnv 希望Java
JDK已经存在于计算机上,并且可以位于任何位置。通常,您可以在中找到已安装的Java
JDK/Library/Java/JavaVirtualMachines/。JEnv允许设置Java的全局版本,一个用于当前Shell的全局版本以及一个按目录的本地版本,当某些项目需要与其他项目不同的版本时,这非常方便。

  1. 如果尚未安装JEnv,请按照http://www.jenv.be/网站上的说明进行手动安装或使用Homebrew。

  2. 将任何Java版本添加到JEnv( 如果将其放置在其他位置,请调整目录 ):

    jenv add /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
    
  3. 使用以下命令设置全局版本:

    jenv global 13
    

您也可以使用jenv add类似的方式添加其他现有版本,并列出可用版本。例如Java 8:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 
jenv versions

有关更多命令,请参见JEnv文档。现在,您可以随时在整个系统,外壳程序或每个本地目录的任何Java版本(Oracle,OpenJDK等)之间进行切换。

为了帮助JAVA_HOME在使用JEnv时进行管理,您可以添加导出插件来为您执行此操作。

$ jenv enable-plugin export
  You may restart your session to activate jenv export plugin echo export plugin activated

JAVA_HOME如果已经设置了导出插件,则可能无法对其进行调整,因此您可能需要在配置文件中清除此变量,以便可以由JEnv对其进行管理。

您还可以使用jenv exec <command> <parms...>来运行单个命令JAVA_HOMEPATH为该命令正确设置,这可能包括打开另一个外壳程序。

使用SDKMAN安装和切换版本

SDKMAN稍有
不同,它处理安装和切换。SDKMAN还将已安装的JDK放置在其自己的目录树中,该目录树通常是~/.sdkman/candidates/java。SDKMAN允许设置全局默认版本以及特定于当前Shell的版本。

  1. 从https://sdkman.io/install安装SDKMAN

  2. 列出可用的Java版本,以确保您知道版本ID

    sdk list java
    
  3. 安装这些版本之一,例如Java 13:

    sdk install java 13.0.0-open
    
  4. 将13设为默认版本:

    sdk default java 13.0.0-open
    

或切换到13以进行会话:

    sdk use java 13.0.0-open

当使用list命令列出可用的安装版本时,您将看到各种各样的Java发行版:

sdk list java

并安装其他版本,例如JDK 8:

sdk install java 8.0.181-oracle

SDKMAN可以使用以前安装的现有版本。只需执行本地安装即可提供您自己的版本标签和JDK的位置:

sdk install java my-local-13 /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

并自由使用:

sdk use java my-local-13

《SDKMAN使用指南》以及其他可以安装和管理的SDK均提供了更多信息。

SDKMAN将自动管理PATH,并JAVA_HOME为你改变的版本为您服务。

使用Jabba安装和切换版本

Jabba
还处理安装和切换。Jabba还将已安装的JDK放入其自己的目录树中,该目录树通常是~/.jabba/jdk

  1. 按照主页上的说明安装Jabba 。

  2. 列出可用的JDK

贾巴ls-远​​程

  1. 安装Java JDK 12

jabba安装openjdk@1.12.0

  1. 用它:

jabba使用openjdk@1.12.0

您还可以别名版本名称,链接到已安装的现有JDK,并找到有趣的JDK(例如GraalVM,Adopt JDK,IBM
JDK等)的混合体。完整的使用指南也可在主页上找到。

贾巴将自动管理PATH,并JAVA_HOME为你改变的版本为您服务。



 类似资料:
  • 显示: Java:13,33:5B8A42F3905B406298B72D750B6919F6 https://openjdk.java.net/ 所以我可以从那里安装它,但然后呢?我只能用新版本吗?

  • 我正在使用管理版本,ala PEP 440。 我已将几个版本上载到私有存储库: 我的问题是现在当我使用 我得到的版本是当我期望得到。 有没有办法让pip忽略“本地版本”,只安装准确的版本,而不必上传到不同的索引(即staging和stable)? 编辑: 我已尝试使用和标志,但问题仍然存在;皮普更喜欢0.0。2版本到0.0版本。2版本。 附加编辑: 我使用的是和python2.7

  • 无法安装包“MVVMCROSS.PortableSupport 3.2.2”。您正试图将此包安装到目标为“Xamarin.ios,version=v1.0”的项目中,但该包不包含与该框架兼容的任何程序集引用或内容文件。有关详细信息,请与包作者联系。 请帮忙。

  • 我需要切换上的Java版本,但不确定如何切换,我现在的版本是但我想切换到: 我想我的Mac上没有这样的版本吧?怎样才能安装它,然后再切换到它呢?谢谢!

  • 问题内容: 这听起来像是一个愚蠢的问题,因为的目的恰恰是这样:在虚拟环境中安装某个特定版本的软件包(在本例中为Django)。但这正是我想要做的,我无法弄清楚。 我在Windows XP上,并且成功创建了虚拟环境,并且能够运行它,但是我应该如何在其中安装我想要的Django版本呢?我的意思是,我知道要使用新创建的脚本,但是如何安装Django 1.0.7?如果我这样做,它将安装最新版本。我尝试以各