热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在MacOSX上安装Java以允许版本切换?》经验,为你挑选了2个好方法。

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

我发现自动做更多事情的唯一其他安装是通过Homebrew cask进行的Oracle安装,但这是商业JDK,我想要开源的!

brew cask info java

显示:

java:11,28:55eed80b163941c8885ad9298e6d786a https://www.oracle.com/technetwork/java/javase/overview/index.html

它是Oracle JDK而不是OpenJDK,请参阅:https: //discourse.brew.sh/t/how-to-install-openjdk-with-brew/712

从较旧的问题(Mac OS X和多个Java版本)的指示已过时,并给我错误的版本 - Oracle而不是OpenJDK.

更新: 截至2018年10月3日,Homebrew酒桶现在指向OpenJDK 11



1> Jayson Minar..:

注意: 这些解决方案适用于您的Java 11 OpenJDK特定情况,但也适用于列出的版本管理器涵盖的任何其他以前的Java版本.这包括来自OpenJDK,Oracle,IBM,Azul,Amazon Correto,Graal等的替代JDK.轻松使用Java 7,Java 8,Java 9,Java 10,Java 11,甚至可以早期访问Java 12!

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


安装

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

使用SDKMAN安装

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

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

使用Jabba安装

这也是一个简单的模型,安装和版本切换都由同一个工具处理.安装到非标准目录.

<见下文"使用Jabba安装和切换版本" >

从OpenJDK下载页面手动安装:

    从下载的OpenJDK 11的Mac OSX http://jdk.java.net/11/(或提前获得JDK 12 http://jdk.java.net/12/)

    取消归档OpenJDK tar,并将生成的jdk-13.jdk文件夹放入您的/Library/Java/JavaVirtualMachines/文件夹,因为这是JDK安装的标准和预期位置.您也可以在现实中随意安装.

用Homebrew安装

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

    如果你还没有安装Homebrew.确保它已更新:

    brew update
    

    如果您尚未添加垃圾桶,请添加:

    brew tap homebrew/cask-versions
    

    寻找可安装的版本:

    brew tap adoptopenjdk/openjdk
    

    检查将要安装的版本的详细信息:

    brew search java   
    

    注意:在2018年10月3日之前,当前版本是Java 11的Oracle商业版本,在10月3日之后,现在是OpenJDK 11.

    安装特定版本的JDK,例如java11,adoptopenjdk8java当前:

    brew search jdk     
    

    该AdoptOpenJDK版本可用,以及现在从家酿木桶:

    brew cask info java
    

这些将被安装到adoptopenjdkMac OSX上预期的传统位置.

其他安装选项:

openJDK的其他一些风格是:

Azul Systems Java Zulu认证的OpenJDK版本可以按照其网站上的说明进行安装.

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

Amazon Correto OpenJDK版本具有易于使用的版本8安装包(其他版本即将推出),并安装到/Library/Java/JavaVirtualMachines/Mac OSX上的标准目录中.

Amazon Corretto是Open Java Development Kit(OpenJDK)的免费,多平台,生产就绪版本.Corretto提供长期支持,包括性能增强和安全修复.亚马逊在内部运行Corretto数千种生产服务,Corretto被认证为与Java SE标准兼容.使用Corretto,您可以在流行的操作系统上开发和运行Java应用程序,包括Amazon Linux 2,Windows和macOS.


我的JDK在哪里?!?!

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

brew cask info adoptopenjdk

匹配Java虚拟机(8):11,x86_64:"Java SE 11"/Library/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版本的位置 /Library/Java/JavaVirtualMachines/

brew cask install java

/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home

在使用像JEnv这样的工具,或者在SDKMAN中添加本地安装,或者在Jabba中链接系统JDK时,了解已安装JDK的位置也很有用 - 您需要知道在哪里找到它们.

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

SDKMAN安装到 -v

Jabba安装到 ~/.sdkman/candidates/java/


手动切换版本

Java可执行文件是一个包装器,它将使用配置的任何JDK ~/.jabba/jdk,因此您可以更改它以更改正在使用的JDK.

例如,如果您安装或解压缩JDK 11,JAVA_HOME如果它是最高版本号,它应该已经是默认值,如果不是,您只需设置:

brew cask install homebrew/cask-versions/java11

现在路径中的Java可执行文件将看到这一点,并使用正确的JDK.

使用/Library/Java/JavaVirtualMachines/jdk-13.jdk前面描述的实用程序可以帮助您创建别名或运行命令以通过识别不同JDK安装的位置来更改Java版本.例如,在您中创建shell别名/usr/libexec/java_home或为您.profile更改.bash_profile:

/usr/libexec/java_home -V

然后要更改版本,只需使用别名即可.

/usr/libexec/java_home -v 13

java版"1.8.0_144"

当然JAVA_HOME手动设置也有效!


使用JEnv切换版本

JEnv希望Java JDK已经存在于机器上,并且可以在任何位置.通常,您会找到已安装的Java JDKJAVA_HOME.JEnv允许设置Java的全局版本,一个用于当前shell,一个每个目录的本地版本,当某些项目需要不同版本的版本时,它们很方便.

    如果您还没有安装JEnv,请在网站http://www.jenv.be/上进行手动安装或使用Homebrew.

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

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/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
    

您还可以/Library/Java/JavaVirtualMachines/以类似方式添加其他现有版本,并列出可用的版本.例如Java 8:

java8
java -version

有关更多命令,请参阅JEnv文档.您现在可以随时在整个系统,shell或每个本地目录之间切换任何Java版本(Oracle,OpenJDK,其他).

jenv add在使用JEnv时帮助管理,您可以添加导出插件来为您执行此操作.

jenv add /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home

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

您还可以使用为该JAVA_HOME命令运行单个命令jenv exec JAVA_HOME为其正确设置,这可能包括打开另一个shell.


使用SDKMAN安装和切换版本

SDKMAN有点不同,它处理安装和切换.SDKMAN还将已安装的JDK放入其自己的目录树中,这通常是PATH.SDKMAN允许设置全局默认版本以及特定于当前shell的版本.

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

    使用SDKMAN安装Java 11:

    jenv global 13
    

    将11设为默认版本:

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

    或者为会话切换到11:

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

您可以使用list命令列出可供安装的可用版本:

sdk list java

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

sdk install java 13.0.0-open 

SDKMAN可以使用以前安装的现有版本.只需进行本地安装,给出自己的版本标签和JDK的位置:

sdk default java 13.0.0-open

并自由使用:

sdk use java 13.0.0-open

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

SDKMAN会在您更改版本时自动管理您~/.sdkman/candidates/javaPATH您.


使用Jabba安装和切换版本

Jabba还处理安装和切换.Jabba还将已安装的JDK放入其自己的目录树中,这通常是JAVA_HOME.

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

    列出可用的JDK

    sdk list java
    

    安装Java JDK 11

    sdk install java 8.0.181-oracle
    

    用它:

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

您还可以为版本名称添加别名,链接到已安装的现有JDK,并查找有趣的JDK,如GraalVM,Adopt JDK,IBM JDK等.完整的使用指南也可在主页上找到.

当您更改版本时,Jabba将自动管理您~/.jabba/jdkPATH您.


可能是在MacOS上运行不同JDK的最广泛和最有用的答案,涵盖了许多不同的方法,有些我以前从未遇到过.
对于手动安装,我认为您需要设置`JAVA_HOME`以选择特定版本,例如``.bash_profile`中的`export JAVA_HOME = $(/ usr/libexec/java_home -v )`
酿酒桶中的Java在昨天,即2018年10月3日改为OpenJDK 11.

2> VK321..:

这就是我做的。

步骤1: 安装Java 11

您可以从此处下载适用于Mac的Java 11 dmg:https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

步骤2:安装Java 11之后。确认所有版本的安装。在终端中键入以下命令。

/usr/libexec/java_home -V

步骤3:编辑.bash_profile

sudo nano ~/.bash_profile

步骤4:默认添加11.0.1。(将以下行添加到bash_profile文件中)。

export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.1)

切换到任何版本

export JAVA_HOME=$(/usr/libexec/java_home -v X.X.X)

现在按CTRL + X退出bash。按“ Y”保存更改。

步骤5:重新载入bash_profile

source ~/.bash_profile

步骤6:确认Java的当前版本

java -version


推荐阅读
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 本文介绍了在Go语言中可见性与scope的规则,包括在函数内外声明的可见性、命名规范和命名风格,以及变量声明和短变量声明的语法。同时,还介绍了变量的生命周期,包括包级别变量和局部变量的生命周期,以及变量在堆和栈上分配的规则和逃逸分析的概念。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
author-avatar
Berlinale
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有