`
棋子chessman
  • 浏览: 196419 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MAC下安装多版本JDK和切换几种方式

 
阅读更多

环境:

MAC AIR,OS X 10.10,64位

 

历史:

过去 Mac 上的 Java 都是由 Apple 自己提供,只支持到 Java 6,并且OS X 10.7 开始系统并不自带(而是可选安装)(原自带的是1.6)。

后来 Apple 加入 OpenJDK 继续支持 Java 6,而 Java 7 将由 Oracle 负责提供。

 

在终端中输入java -version可查看当前JDK版本信息,如果还没安装任一JDK,就会提示安装,点击后会跳到oralce java的下载网页。

 

安装包(注意都是下载mac下的dmg安装包):

JDK 1.6(验证OS X 10.10可用):http://support.apple.com/kb/DL1572

JDK 1.7&1.8(1.7在页面下方):http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

安装:

dmg安装包,安装过程如一般程序,略

 

最终安装目录(版本号根据情况略有不同):

JDK 1.6:

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk

 

JDK 1.7&1.8:

/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk

/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk

 

推荐方式A:

vi .bash_profile 输入以下内容
然后执行source .bash_profile生效新配置

 

# Mac默认 JDK 6(Mac默认自带了一个jdk6版本)
export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6`
# 设置 JDK 7
export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`
# 设置 JDK 8
export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`

#默认JDK 6
export JAVA_HOME=$JAVA_6_HOME

#alias命令动态切换JDK版本
alias jdk6="export JAVA_HOME=$JAVA_6_HOME"
alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"

 

 默认jdk为1.6,执行jdk6或jdk7或jdk8后,通过java -version可看到已切换成相应版本。

 

推荐方式B:

1、安装jenv

执行:curl -s get.jenv.io | bash

jenv参考(关键是方便别的java工具管理):https://github.com/linux-china/jenv/wiki/Chinese-Introduction

2、进入jenv目录,然后建相关目录:

cd ~/.jenv/candidates/
mkdir java
cd java
mkdir 1.6
mkdir 1.7
mkdir 1.8

 

3、执行以下命令:

ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.6
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.7
ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin ~/.jenv/candidates/java/1.8

 

大功告成:

1、最先默认的jdk一般是你最后安装的那jdk。

2、切换版本:jenv use java 1.8

3、设置缺少版本:jenv default java 1.6

 

不推荐方式:

#区别在于:此部分是写死路径的
export JAVA_6_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home

#默认JDK 6
export JAVA_HOME=$JAVA_6_HOME

#alias命令动态切换JDK版本
alias jdk6="export JAVA_HOME=$JAVA_6_HOME"
alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"

 

根据苹果的官方说明,Mac OS X 10.5 及以后的版本应该使用 /usr/libexec/java_home 命令来确定 JAVA_HOME (推荐方式A就是依据此原理)。

例:

//查看默认jdk的安装路径
/usr/libexec/java_home

//查看jdk 1.6的安装路径
/usr/libexec/java_home -v 1.6

 

而在此之前的版本由于没有这个命令,则应该使用固定的 /Library/Java/Home 目录,也就是直接在环境变量中写死。

//下面的几个目录其实是等价的链接关系,都指向的是默认的JDK。但是硬编码方式,不推荐。
JAVA_HOME=/Library/Java/Home
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home

 因为不同的 Java 版本和不同的 Java 实现可能安装在了不同的目录下,所以使用硬编码的目录会有如下缺点:

  • 安装或升级新的 Java 后需要重新设置 JAVA_HOME(尤其是带版本号的目录)
  • 无法适应不同的 Java 实现(Apple和Oracle的)
其他分析:
1、打开终端输入执行:which java,显示/usr/bin/java
2、执行cd /usr/bin/,再执行ls -ll |grep java,可看到java此命令是link到/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
3、执行:cd /System/Library/Frameworks/JavaVM.framework/Versions/ 进入后,再执行ls -ll,可看到Current -> A,也就是Current目录link到A目录。而A目录在安装第一个JDK时就存在,用来JDK多版本管理使用的(猜测是使用到JAVA_HOME)。
另外:
/System/Library/Frameworks/JavaVM.framework/Versions/ 下有多个不同(低)版本的目录,但它们链接的都是 CurrentJDK 目录。总之,这些Java都是苹果提供的Java,Oracle 或 OpenJDK 提供的 Java 不在此目录中。
据说以前可在系统设置中“Java Preferences”对话框可设置当前jdk,再自动调整A目录内容,但我没看到过。
Java 7 需要 Mac OS X 10.7.3 (Lion) 及以上版本才能安装。在浏览器中运行Java要求是64位浏览器,所以不支持Chrome, Safari 或 Firefox 没问题。
分享到:
评论
1 楼 javasharer 2016-12-19  
很精彩的帖子,楼主在第一种方法最好特别提示一下`/usr/libexec/java_home -v 1.8`  是用`而不是',不注意容易搞错

相关推荐

    JDK6.2免安装版

    它减少了安装过程的时间,并且可以方便地进行版本切换,只需要更改环境变量指向不同的JDK目录即可。 解压RAR文件后,你会得到JDK6.2的文件夹,其中包含以下几个关键部分: 1. `bin` 目录:这是最重要的部分,包含...

    jdk-11.0.14_osx-x64_bin.dmg

    - **JDK版本管理**:如果你的系统上安装了多个JDK版本,可以使用工具如`jenv`来切换和管理不同版本。 - **IDE集成**:主流的Java IDE,如IntelliJ IDEA和Eclipse,都支持JDK 11,确保IDE配置正确引用了新安装的JDK...

    jdk-8u251-macosx-x64.dmg

    【标题】"jdk-8u251-macosx-x64.dmg"指的是Java ...总之,"jdk-8u251-macosx-x64.dmg"是一个用于在Mac OS X系统上安装64位JDK 8u251的文件,该版本提供了丰富的开发工具和语言特性,是Java开发者的重要工具。

    JAVA入门准备的内容

    - **启动与停止**:在命令行中切换到Tomcat的`bin`目录下,执行`startup.bat`(Windows)或`startup.sh`(Linux/Mac)启动服务;相应的,使用`shutdown.bat`或`shutdown.sh`命令停止服务。 - **部署应用**:将编写好...

    配置java环境变量(linux mac windows7)

    配置环境变量的方法有几种: - **修改/etc/profile**:适用于所有用户,但可能带来安全性问题。在文件末尾添加环境变量设置,并记得重新登录使更改生效。 - **修改.bash_profile**:这是更安全的选择,允许在用户...

    Java游戏设计打飞机程序(源代码).zip

    这通常包括安装JDK(Java Development Kit),配置IDE(集成开发环境),如Eclipse或IntelliJ IDEA,导入项目,理解和解析源代码结构,以及如何运行和调试游戏。 在Java游戏设计打飞机程序(源代码)中,我们可以看到...

    ireport 打印 工具

    - **JDK版本**:推荐使用JDK 1.6或更高版本。 - **其他依赖**:需要安装JasperReports库,通常情况下iReport会自动处理这些依赖。 #### 三、JasperReports基础概念 - **JasperReports**:是一个开源的Java报表引擎...

    intellij-idea-settings:macOS版本的自定义IntelliJ IDEA设置

    5. **Live Templates**:这是一种快速输入常用代码片段的方式,例如`fori`可以快速生成一个for循环。用户可以创建自己的模板或修改默认模板。 6. **插件**:IntelliJ IDEA支持大量第三方插件,例如Lombok插件可以...

    魔板游戏Java课程设计报告.doc

    开发一个用户友好的魔板游戏应用,提供初级和高级难度,支持图像和数字两种玩法,允许用户自由切换和调整游戏难度。 2.2 主体功能 - 游戏启动:用户通过菜单栏选择游戏模式和难度。 - 随机排列:游戏开始时,元素...

    新版Android开发教程.rar

    开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了 43 家。 移动手机联盟创始成员: Aplix 、 Ascender 、 Audience 、 Broadcom 、中国移动、 eBay 、 Esmertec 、谷歌、...

    IDEA使用的相关配置

    同时,文件分屏功能可以帮助开发者在同一界面下查看多个文件,便于代码对比和参考。具体操作如下: 1. **显示代码行号**:在设置窗口中找到“Editor”->“General”->“Appearance”,勾选“Show line numbers”...

Global site tag (gtag.js) - Google Analytics