mac下同时安装jdk1.7和jdk1.8
1.安装jdk1.7时会弹出报错,说版本不兼容。

解决方案
双击安装包,使安装包挂在到机器上,即在Finder里可以看到一个名字为JDK 7 Update 60的Device。
在terminal下输入以下命令,命令中的路径可能不同
$ pkgutil --expand /Volumes/JDK\ 7\ Update\ 60/JDK\ 7\ Update\ 60.pkg /tmp/jdk.unpkg
$ cd /tmp/jdk.unpkg
$ vim Distribution
- 将打开的文件内容替换,找到
pm_install_check方法,修改为以下就行。
function pm_install_check() {
return true;
}
- 重新打包
$ pkgutil --flatten /tmp/jdk.unpkg /tmp/jdk.pkg
- 开始重新安装包(新的包)
$ open /tmp/jdk.pkg
- 1
注意:原始挂在到机器上的安装包,一定得先关了才可以。
2)
配置
安装完成之后,调出terminal命令行工具,检验安装是否成功:
$ java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
那如何进行版本切换呢?先看当前生效的JDK路径:
$ which java
/usr/bin/java
$ cd /usr/bin
$ ls -l
……
lrwxr-xr-x 1 root wheel 74 Oct 21 18:10 java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
lrwxr-xr-x 1 root wheel 75 Oct 21 18:10 javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
lrwxr-xr-x 1 root wheel 77 Oct 21 18:10 javadoc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javadoc
……

可以发现这个java只是一个当前系统生效的JDK的一个软连接,Java安装的是实际位置位于
/Library/Java/JavaVirtualMachines
使用如下的命令可以指定当前系统使用哪个版本的JDK:
$ /usr/libexec/java_home -v 版本号
编辑bash_profile文件,添加如下内容(注意:JDK9不是 -v 1.9):
$ vi ~/.bash_profile
export JAVA_7_HOME="$(/usr/libexec/java_home -v 1.7)"
export JAVA_8_HOME="$(/usr/libexec/java_home -v 1.8)"
export JAVA_9_HOME="$(/usr/libexec/java_home -v 9)"
alias jdk7='export JAVA_HOME=$JAVA_7_HOME'
alias jdk8='export JAVA_HOME=$JAVA_8_HOME'
alias jdk9='export JAVA_HOME=$JAVA_9_HOME'
# 默认使用JDK8
export JAVA_HOME=$JAVA_8_HOME
$ source ~/.bash_profile
版本切换
如上配置之后,默认使用JDK1.8,然后使用jdk7、jdk8或jdk9来切换当前系统的JDK版本:
$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
# 切换到JDK1.8,使用如下命令
$ jdk8
$ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
# 切换到JDK9
$ jdk9
$ java -version
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
其他
linux环境下JDK配置备份如下:
$ sudo vi ~/.bashrc
export JAVA_HOME=/my/java/home/jdk180
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
$ source ~/.bashrc
windows环境下JDK配置如下:
JAVA_HOME=/my/java/home/jdk180
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\jre\lib
PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%PATH%
参考:http://adolphor.com/blog/2016/12/24/install-multiple-jdk-to-macos.html
https://blog.csdn.net/zw235345721/article/details/78702254
mac下同时安装jdk1.7和jdk1.8的更多相关文章
- Mac 下 docker安装
http://www.th7.cn/system/mac/201405/56653.shtml Mac 下 docker安装 以及 处理错误Cannot connect to the Docker d ...
- Mac下Jekyll安装
之前一直用Wordpress,虽然功能强大,各种插件各种bug,如果想弄个主题,折腾得要命.最近改用jekyll+gitHub免费空间.记录一下. 我用的是Mac,所以只讲述Mac下如何安装,Wind ...
- Mac下Tomcat安装与Intellij IDEA配置Tomcat
Mac下Tomcat安装与Intellij IDEA配置Tomcat 一 安装 1 下载地址:https://tomcat.apache.org/download-90.cgi 2 将压缩包解压后移至 ...
- Mac下Maven安装与配置
Mac下Maven安装与配置 下载maven http://maven.apache.org/download.cgi main->download菜单下的Files 下载后解压在Documen ...
- Mac下删除安装的pkg
Mac下的安装和删除都比windows更加简单清晰,这点在dmg方式下非常明显,但很多时候我们会使用pkg来进行安装,这样的安装想删除就有点麻烦了. 比如,我安装了Golang这个pkg用于g ...
- Mac下新安装的MySQL无法登陆root用户解决方法
一 设置MySQL命令行搜索路径 0.苹果->系统偏好设置->最下边点mysql 在弹出页面中 启动mysql服务 1.打开终端,输入: sudo vi ~/.bash_profile ...
- Mac下webpack安装
最近开始接触构建工具webpack,公司电脑是 windows,而我自己的呢是mac.本来以为在自己电脑安装很简单,但是出了点问题,所以写出来分享下. 这里用npm的方式安装,首先你要安装node.j ...
- JMeter在Mac下的安装
其实不论操作系统是Windows.Unix(如Mac OS).Linux(如Ubuntu)等,JMeter所需要的基础环境配置都是类似的,本文介绍JMeter for MAC的安装与环境配置. JMe ...
- Mac下手动安装SafariDriver extension
环境:Mac OS X Yosemite 10.10.4下, Safari 8 Step 1:第一次运行SafariDriver时,先找到WebDriver extension的安装路径,比如/Use ...
- Mac下手动安装Chromedriver.exe
Mac OS X Yosemite 10.10.4下,ChromeDriver运行异常,需要手动安装chromedriver.exe Step 1: 打开https://sites.google.co ...
随机推荐
- javascript004引用类型
–掌握数组的概念.特性.常用方法(重点) –掌握Object,学会使用对象(重中之重) –了解其他引用类型对象 一:数组 •在ECMAScript中数组是非常常用的引用类型了.ECMAScript所定 ...
- 第一个hibernate程序HelloWorldHibernate
HelloWorldHibernate步骤: HelloWorld 1,新建java项目hibernate_0100_HelloWorld 2,学习User-library-hibernate,并加入 ...
- linux 下 vi 编辑器 使用
命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode) 1.进入插入模式 按「i」切换进入插入模式「insert mode」,按“i”进入插 ...
- 多线程编程(二)-Exchanger的使用
Exchanger的介绍 类Exchanger的功能可以使两个线程之间传输数据. 方法exchange()的使用 package com.wjg.unit; import java.util.conc ...
- WPF中用后台C#代码为TabItem设置Background属性
TabItem tabItem = sender as TabItem; tabItem.Background = new ImageBrush(new BitmapImage(new Uri(@&q ...
- Android studio应用导入源码错误This attribute must be localized
This attribute must be localized 产生原因: 多语言错误,源码中关于语言的显示不能直接赋值,而是需要通过xml来实现: 例如 <TextView android: ...
- Lambda表达式&匿名方法
“Lambda表达式“(lambda Expression)就是一个匿名函数(匿名方法),lambda表达式基于数学中的入演算得名. lambda运算符:所有的lambda表达式都是用新的lambda ...
- Hadoop学习笔记(9) ——源码初窥
Hadoop学习笔记(9) ——源码初窥 之前我们把Hadoop算是入了门,下载的源码,写了HelloWorld,简要分析了其编程要点,然后也编了个较复杂的示例.接下来其实就有两条路可走了,一条是继续 ...
- [javaSE] GUI(菜单)
菜单MenuBar Menu MenuItem 调用Frame对象的setMenuBar()方法,设置菜单,参数:MenuBar对象 import java.awt.FlowLayout; impo ...
- 十七、ThreadPoolExecutor线程池
一.简介 executor接口 executor接口在JDK的java.util.concurrent包下,它只有一个抽象方法: void execute(Runnable command); 这意味 ...