mac切换jdk版本

mac切换jdk版本

使用工具命令“/usr/libexec/java_home”来定位JAVA_HOME

export JAVA_6_HOME=`/usr/libexec/java_home -v 1.6`

这个工具命令在以下目录下:

/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home

定义mac系统不同jdk版本的JAVA_HOME:

# 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`
  • 关于export:
    export设置只对当前的bash登录session有效,只是把这个变量载入到内存中,而并没有写入哪个文件。而注销或重启之后,系统加载的磁盘上的文件。我们可以写入文件一般的文件。之后source它,使他在文件中生效,放在不同的文件地方效果不一样:比如放在 /etc/profile 里面,这样登录后会执行这里面的命令,对所有用户都有效。比如放在 ~/.bahs_profile 和 ~/.bashrc(home目录下针对bash这个shell)下。
#默认JDK 6
export JAVA_HOME=$JAVA_6_HOME

利用alias设置切换jdk版本的别名

#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"

这样在console终端使用jdk6,jdk7,jdk8就可以动态的切换当前的jdk版本。

mac安装jdk1.6

  1. 系统默认安装的JRE路径
    /System/Library/Frameworks/JavaVM.framework/
    oracle和apple等安装的JDK包的路径
    /Library/Java/JavaVirtualMachines/

  2. JAVA_HOME目录
    /Library/Java/JavaVirtualMachines/1.6.0_38-b04-436.jdk/Contents/Home

  3. rt.jar、jsse.jar、tools.jar
    rt.jar和tools.jar已经在
    /Library/Java/JavaVIrtualMachines/1.6.0jdk/Contents/Classes/classes.jar中。
    jsse.jar也在Classes目录下。建议把classes.jar和jsse.jar建立软连接到/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/下,并且classes.jar的软链接命名为rt.jar。也建一个为tools.jar的软链接。这样就可以避免一些时候会发生找不到rt.jar、tools.jar的问题了,例如在使用混淆码的时候。

以下链接在最新Mac系统不适用了
http://support.apple.com/kb/DL1573
需要使用
https://support.apple.com/kb/DL1572?locale=zh_CN


关于idea下jdk的问题:
https://intellij-support.jetbrains.com/entries/23455956-Selecting-the-JDK-version-the-IDE-will-run-under
里面有这一段话:

Mac OS X
At the moment all our products require Apple JDK 1.6 to be installed in order to run on Mac. JDK 1.7 from Oracle is not officially supported yet and has known problems that stop us from using it by default. Oracle JDK 1.7.0_40 has added support for Retina and works much better than previous versions on Mac. You are welcome to give it a try in case you have any problems with Apple JDK.
To force running under JDK 1.7 edit /Applications/.app/Contents/Info.plist file, change JVMVersion from 1.6* to 1.7* :
<key>JVMVersion</key><string>1.7*</string>

idea目前似乎必须要使用安装apple jdk 1.6,使用1.7以上的会有问题,如果想强制使用1.7以上的版本,需要按照上面的操作执行。


jdk1.6关联源码(利用ln -s建立软链接,如需查看用法,使用man ln或者ln –help进行查看):

xiahanglideMacBook-Pro:~ xiahangli$ sudo -s
Password:
bash-3.2# cd /System/Library/Frameworks/JavaVM.framework/Home
bash-3.2# ln -s /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/docs.jar
bash-3.2# ln -s /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/src.jar

测试发现,软链接是存在了,但是源码依然无法识别这里写图片描述
目前还不知道如何得到mac版jdk1.6源码的方法,如有同行知晓,还希望留言告诉下,thx~

现在只好配置jre1.6运行环境然后利用idea自带的反编译工具查看代码了~>_<~
这里写图片描述

<think>我们参考用户提供的引用内容,特别是引用[4]关于MacBook切换JDK版本的方法,以及引用[2]中关于环境变量配置顺序的说明。用户的问题是:如何在操作系统中切换JDK版本并配置环境变量。根据引用[4],在MacOS中可以通过定义别名(alias)来切换不同的JAVA_HOME环境变量,从而实现JDK版本切换。例如:aliasjdk8="exportJAVA_HOME=$JAVA_HOME_8&&echocurrentJDKhasswitchedtooraclejdkversion1.8.&&java-version"这里$JAVA_HOME_8是一个预先定义好的变量,指向JDK8的安装路径。在Linux系统中,切换JDK版本通常有两种方法:1.使用update-alternatives工具(适用于Debian/Ubuntu等系统)2.手动修改环境变量(适用于所有Linux发行版)由于用户之前提到了rpm(RedHat系列包管理器),我们假设可能是CentOS/RedHat系统,但用户的问题是关于切换JDK版本,所以我们将覆盖两种主要方法。同时,引用[2]提到环境变量配置的顺序问题,需要注意系统可能存在的其他java可执行文件干扰,需要删除或调整优先级。下面我们详细说明:方法一:使用update-alternatives(推荐在Debian/Ubuntu上使用)步骤:1.安装多个JDK版本(通过apt或手动安装)2.使用update-alternatives注册每个JDK的可执行文件3.使用update-alternatives命令切换版本方法二:手动修改环境变量(通用方法)步骤:1.安装多个JDK版本,并记录每个版本的安装路径2.在环境变量配置文件(如~/.bashrc或/etc/profile)中设置JAVA_HOME和PATH3.通过修改JAVA_HOME的值来切换版本,然后重新加载配置文件另外,引用[4]中在MacOS上使用别名(alias)的方法,在Linux上同样适用。下面我们详细展开:方法一:使用update-alternatives(以Ubuntu为例)1.安装多个JDK版本假设我们已经安装了JDK8和JDK11,分别位于:/usr/lib/jvm/java-8-openjdk-amd64/usr/lib/jvm/java-11-openjdk-amd642.注册JDK首先注册javac和java等工具,以java为例:sudoupdate-alternatives--install"/usr/bin/java""java""/usr/lib/jvm/java-8-openjdk-amd64/bin/java"1sudoupdate-alternatives--install"/usr/bin/java""java""/usr/lib/jvm/java-11-openjdk-amd64/bin/java"2然后注册javac:sudoupdate-alternatives--install"/usr/bin/javac""javac""/usr/lib/jvm/java-8-openjdk-amd64/bin/javac"1sudoupdate-alternatives--install"/usr/bin/javac""javac""/usr/lib/jvm/java-11-openjdk-amd64/bin/javac"2数字1和2代表优先级,也可以不设置,或者设置相同的优先级。3.切换版本执行以下命令并选择版本:sudoupdate-alternatives--configjavasudoupdate-alternatives--configjavac系统会列出所有已注册的java可执行文件,输入序号选择。4.验证java-versionjavac-version方法二:手动修改环境变量(适用于所有Linux发行版和MacOS)1.安装多个JDK,记录路径,例如:JDK8:/opt/jdk1.8.0_301JDK11:/opt/jdk11.0.122.在用户的环境变量配置文件(如~/.bashrc或~/.bash_profile)中设置:#定义各个JDK的路径exportJAVA_HOME_8=/opt/jdk1.8.0_301exportJAVA_HOME_11=/opt/jdk11.0.12#设置默认的JDKexportJAVA_HOME=$JAVA_HOME_11exportPATH=$JAVA_HOME/bin:$PATH3.创建切换命令(别名)在~/.bashrc中添加:aliasjdk8="exportJAVA_HOME=$JAVA_HOME_8&&exportPATH=\$JAVA_HOME/bin:\$PATH&&echo'SwitchedtoJDK8'&&java-version"aliasjdk11="exportJAVA_HOME=$JAVA_HOME_11&&exportPATH=\$JAVA_HOME/bin:\$PATH&&echo'SwitchedtoJDK11'&&java-version"4.使配置生效source~/.bashrc5.切换版本在终端输入jdk8或jdk11即可切换。注意:引用[2]中提到,环境变量的配置顺序很重要。在PATH中,应该确保$JAVA_HOME/bin的路径在其他可能包含java的路径之前。例如,如果系统在/usr/bin中也有java,那么应该确保$JAVA_HOME/bin在PATH中位于/usr/bin之前。另外,如果之前安装过其他JDK,可能会在系统路径下(如/usr/bin)存在java可执行文件,这可能会导致切换版本不对。这时可以检查并删除这些文件(如引用[2]中提到的C:\Windows\System32下的java.exe,但在Linux中可能是/usr/bin/java的链接),或者确保PATH中自定义的JDK路径在系统路径之前。在Linux中,如果使用update-alternatives,它会管理/usr/bin下的链接,所以不会有问题。对于MacOS,引用[4]提供了类似方法,但MacOS中通常使用/usr/libexec/java_home工具来切换版本。不过使用别名方法同样有效。总结:-对于Debian/Ubuntu,推荐使用update-alternatives。-对于其他系统(包括MacOS),可以使用手动配置别名的方式。下面我们给出一个具体的配置示例(手动配置方式):</think>### 在操作系统中切换 JDK 版本的方法 以下是基于 Linux 和 macOS 系统切换 JDK 版本的完整方案,结合环境变量配置与版本管理工具实现高效切换: #### 一、Linux 系统切换方案 **1. 配置多版本环境变量** 在 `~/.bashrc` 或 `/etc/profile` 中添加: ```bash # 定义各版本 JDK 路径 export JAVA_HOME_8=/usr/lib/jvm/jdk1.8.0_391 export JAVA_HOME_11=/usr/lib/jvm/jdk-11.0.22 export JAVA_HOME_17=/usr/lib/jvm/jdk-17.0.10 # 设置默认版本 export JAVA_HOME=$JAVA_HOME_17 export PATH=$JAVA_HOME/bin:$PATH ``` 执行 `source ~/.bashrc` 生效[^3] **2. 创建版本切换命令** ```bash alias jdk8="export JAVA_HOME=$JAVA_HOME_8 && export PATH=\$JAVA_HOME/bin:\$PATH && echo 'JDK switched to 1.8' && java -version" alias jdk11="export JAVA_HOME=$JAVA_HOME_11 && export PATH=\$JAVA_HOME/bin:\$PATH && echo 'JDK switched to 11' && java -version" alias jdk17="export JAVA_HOME=$JAVA_HOME_17 && export PATH=\$JAVA_HOME/bin:\$PATH && echo 'JDK switched to 17' && java -version" ``` **3. 使用示例** ```bash jdk8 # 切换JDK 1.8 jdk17 # 切换JDK 17 ``` #### 二、macOS 系统切换方案 **1. 使用 `jenv` 版本管理工具** ```bash brew install jenv # 安装工具 jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_391.jdk/Contents/Home jenv add /Library/Java/JavaVirtualMachines/jdk-17.0.10.jdk/Contents/Home ``` **2. 配置环境变量** ```bash echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc echo 'eval "$(jenv init -)"' >> ~/.zshrc ``` **3. 版本切换命令** ```bash jenv versions # 查看可用版本 jenv global 1.8 # 全局切换JDK 8 jenv local 17 # 当前目录使用 JDK 17 ``` #### 三、关键注意事项 1. **路径优先级问题** 删除冲突的 Java 执行文件(如 Windows 的 `C:\Windows\System32\java.exe`)[^2] 2. **环境变量加载顺序** PATH 中自定义路径应置于系统路径之前: ```bash # 正确顺序(自定义路径在前) export PATH=$JAVA_HOME/bin:$PATH ``` 3. **验证配置** ```bash echo $JAVA_HOME # 检查当前 JDK 路径 java -version # 验证运行时版本 ``` #### 四、切换效果演示 ```bash $ jdk11 JDK switched to 11 openjdk version "11.0.22" 2024-01-16 OpenJDK Runtime Environment (build 11.0.22+7-post-Ubuntu-1ubuntu220.04.1) OpenJDK 64-Bit Server VM (build 11.0.22+7-post-Ubuntu-1ubuntu220.04.1, mixed mode) ``` > 此方案通过环境变量重定向实现秒级切换,同时保持系统环境整洁[^4]。建议使用工具管理(如 `jenv`),可避免手动配置错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值