java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
$ cat ~/.jdk
# !/bin/bash
# list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() {
echo "Switching java version $1";
requestedVersion=$1
oldStyleVersion=8
# Set the version
if [ $requestedVersion -gt $oldStyleVersion ]; then
export JAVA_HOME=$(/usr/libexec/java_home -v $1);
else
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
fi
echo "Setting JAVA_HOME=$JAVA_HOME"
which java
java -version;
}
切换到java 8
$ jdk 8
Switching java version 8
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
切换到java 9
$ jdk 9
Switching java version 9
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/usr/bin/java
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
23条答案
按热度按时间bxjv4tth1#
第一次运行
/usr/libexec/java_home -V
输出如下:选择要作为默认值的版本(
1.6.0_65-b14-462
(为方便起见)那么:也可以只指定主要版本,如:
现在当你跑的时候
java -version
您将看到:添加
export JAVA_HOME…
行到shell的初始化文件。对于bash(如antonyh所述):
对于鱼(如ormurin所述)
更新.zshrc文件应该可以:
按ctrl+x退出编辑器,按y保存更改
xwbd5t1u2#
macos el capitan或更新版本将选择更高版本的jdk
/Library/Java/JavaVirtualMachines
,因此为了降级,您可以重命名该文件Info.plist
像这样的事情Info.plist.disabled
以便操作系统选择以前的版本。ndh0cuux3#
使用jenv,它就像一个java环境管理器。它非常容易使用和清洁
对于mac,请执行以下步骤:
安装:如果您使用的是bash,请执行以下步骤:
向jenv添加所需的jvm版本:
检查已安装的版本:
设置要使用的java版本:
iih3973s4#
加上以上的答案,我把以下几行放在我的字典里
.bash_profile
(或.zshrc
对于macos 10.15+,这使得切换非常方便(包括@elektromin对java 9的注解):插入后,执行
$ source .bash_profile
我可以通过键入以下内容切换到java 8:lztngnrs5#
将以下代码行添加到.zshrc(或bash\u配置文件)中:
别名j='f(){导出java\u主页=
/usr/libexec/java_home -v $1
};f'保存到会话:
$来源.zshrc
运行命令(例如j 13、j14、j1.8…)
18亿日元
解释这是参数化的,所以您不需要像发布的其他解决方案那样更新脚本。如果没有安装jvm,系统会告诉您。以下示例案例:
r6l8ljro6#
jdk开关脚本
我已经修改了上面@alex的答案,并编写了以下内容来修复java9的代码。
切换到java 8
切换到java 9
mm9b1k5b7#
热释光;博士
添加行:
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'
到文件~/.bash_profile
(用下载的版本替换jdk1.8.0144.jdk)那么
source ~/.bash_profile
3yhwsihp8#
使用jenv是一种简单的方法。
1.安装jenv
2.2.5杰夫
3.符号链接jdk路径
4.你都准备好了
开关命令:
jenv使用java1.8
设置默认值:
JANV默认java 1.7
sczxawaw9#
为使用默认流程的用户使用终端的四个简单步骤:)
echo $JAVA_HOME
提供当前java主页。例如:/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/
将带您到通常安装jdk的文件夹(对于您的计算机可能不同)ls
显示可用文件夹(通常有版本号,例如:jdk1.8.0_191.jdk openjdk-11.0.2.jdk
)export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'
将更改java主页。。cigdeys310#
下面是我在linux(ubuntu/mint-mate)上的实现方式,我想mac也可以这样做。
安装配置(&C)
步骤:
[基本-部分]
手工下载jdk(.tgz文件)。
在适当的位置正确地解压缩和重命名。
例如
/mnt/star/program/java/jdk-1.8
制作一个软链接,稍后将更改为切换java版本。例如
ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
因此/mnt/star/program/java/java
是软链接。套
JAVA_HOME
在开始脚本中。可能需要像这样的文件
/etc/profile.d/eric.sh
,或只是使用~/.bashrc
.例如
JAVA_HOME=/mnt/star/program/java/java
然后打开一个新的bash shell。java -version
应该打印java版本。[更多版本-部分]
根据需要下载并安装更多java版本,与上述步骤类似。
例如
/mnt/star/program/java/jdk-11
[开关-零件]在
~/.bashrc
,为各种java版本定义变量。例如
_E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
_E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
# dir of default version,_E_JAVA_HOME_D=$_E_JAVA_HOME_8
在~/.bashrc
,定义切换java版本的命令。例如
switch java version,
alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"# default java version,
alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"alias jv="java -version"
在码头,source ~/.bashrc
使更改生效。然后可以使用定义的命令进行切换。
命令-从上方配置
命令:
jv11
切换到java 11jv8
切换到java 8jvd
切换到默认java版本,由_E_JAVA_HOME_D
定义见上文。jv
显示java版本。输出示例:
机制
它通过改变软链接进行切换,软链接用作
JAVA_HOME
.提示
在我的机器上手动安装jdk时,我保留次要版本,然后与主要版本进行软链接,但没有次要版本。
例如
//这是实际的目录,
jdk1.8.0_191
//这是一个软链接到jdk1.8.0_191
jdk-8
//这是一个软链接到jdk-8
或者jdk-11
java
我在中定义命令别名~/.bashrc
,但在单独的文件中定义变量。我正在使用
~/.eric_var
定义变量2eafrhcq11#
把这个放到你的~/.profile里,然后像这样在你的终端上使用它
setjdk 1.8
,setjdk 1.7
,setjdk 9
等等。。。如果你没有
removeFromPath
那就是:function removeFromPath() { export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;") }
ftf50wuq12#
一个基于/usr/libexec/java的小型fish函数
如果不使用fish,可以在bash中执行类似的操作:
然后要在Java之间切换,请执行以下操作:
裁判:https://gist.github.com/kenglxn/1843d552dff4d4233271
syqv5f0l13#
如果您使用的是fish和mac,并且希望能够在jdk之间进行切换,那么下面的内容在mac上对我适用。
@kenglxn的答案对我不起作用,我发现bcos没有设定-g,这是全球性的!
放在~/.config/fish/config.fish下面
要了解已安装的版本/次要版本,可以执行以下操作:
oug3syen14#
这有点棘手,但请尝试遵循在OSX10.9(mavericks)上安装java中描述的步骤。基本上,你得把你的别名改成
java
.一步一步地:
在安装JDK1.7之后,您将需要执行以下操作
sudo ln -snf
以便将链接更改为当前java
. 为此,打开终端并发出命令:请注意,目录
jdk1.7.0_51.jdk
可能会根据您安装的sdk版本而更改。现在,你需要设置
JAVA_HOME
指向哪里jdk_1.7.0_xx.jdk
已安装。再次打开终端并键入:您可以添加
export JAVA_HOME
在您的.bashrc
文件将java永久地保存在您的终端中izj3ouym15#
您可以将其添加到.bash\u配置文件中,以在默认情况下设置版本。