如何更改mac上的Java默认版本?
当前回答
首先找出存储环境变量的位置
emacs bash_profile zshrc中
设置环境变量步骤:- .单击“确定”
从JAVA下载jdk 双击安装它 现在在文件中设置环境变量 a. emacs。你可以使用这个链接或看到下面的截图
b.对于ZSH配置文件设置-
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
2. source ~/.zshrc - Restart zshrc to reflect the changes.
3. echo $JAVA_HOME - make sure path is set up properly
----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
4. java -version
--> java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
所有设置现在您可以轻松升级或降级JAVA版本..
其他回答
首先运行/usr/ libeexec /java_home -V,输出如下:
Matching Java Virtual Machines (3):
1.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
选择你想要的默认版本(1.6.0_65-b14-462),然后:
export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462`
或者你可以只指定主版本,比如:
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
现在当你运行java -version时,你会看到:
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)
在shell的init文件中添加export JAVA_HOME…行。
对于Bash(如antonyh所述):
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
鱼(如ormurin所述)
set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)
更新.zshrc文件应该工作:
nano ~/.zshrc
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8.0)
按“CTRL+X”退出编辑器 按Y保存更改
source ~/.zshrc
echo $JAVA_HOME
java -version
除了上面的答案,我在我的.bash_profile(或MacOS 10.15+的.zshrc)中添加了以下几行,这使得切换非常方便(包括java 9的@elektromin的注释):
alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"
插入后,执行$ source .bash_profile
我可以通过输入以下命令切换到Java 8:
$ j8
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
我使用我写的fish函数
function javav
set min_version 8
set max_version 99
set java_home_cmd '/usr/libexec/java_home 2>/dev/null --failfast --version'
if ! test (eval $java_home_cmd $argv)
echo "Version not found"
return 1
end
for current_version in (seq $min_version $max_version)
set path_to_remove (eval $java_home_cmd $current_version)
if ! test -z $path_to_remove
echo 'Removing' $path_to_remove 'from PATH'
set PATH (string match --invert $path_to_remove/bin $PATH)
end
end
echo 'Setting up env for Java' $argv
set -x JAVA_HOME (eval $java_home_cmd $argv)
set PATH $JAVA_HOME/bin $PATH
end
它基本上自动化了这个答案中的步骤,类似于这个,但也负责设置PATH。
只要把它放在.config/fish/functions/中,然后像这样使用它:
javav 11 # Sets to Java 11
javav 16 # Sets to Java 16
在不需要安装额外工具的情况下,让/usr/ libeexec /java_home -V将单独安装的JDK识别为一级成员的简单方法是如下所示的符号链接:
sudo ln -s <path> /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk
<path>是一个包含Contents/Home/bin等子目录的目录。
一个常见的用例是注册Android Studio中包含的JDK/JRE:
在macOS上最新版本的Android Studio中,Java工具的默认位置是/Applications/Android\ Studio.app/Contents/jre。我们将使用jdk-android-studio。JDK作为标识符:
sudo ln -s /Applications/Android\ Studio.app/Contents/jre /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk
现在,/usr/libexec/java_home -V将在匹配Java虚拟机下列出它:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
11.0.13 (arm64) "JetBrains s.r.o." - "OpenJDK 11.0.13" /Applications/Android Studio.app/Contents/jre/Contents/Home
/Applications/Android Studio.app/Contents/jre/Contents/Home
将以下代码行添加到你的.zshrc(或bash_profile):
alias j='f(){export JAVA_HOME=/usr/libexec/ JAVA_HOME -v $1};f'
保存到会话:
$ source .zshrc
执行命令(例如j13, j14, j1.8…)
$ j 1.8
解释 这是参数化的,所以你不需要像其他解决方案一样更新脚本。如果您没有安装JVM,系统会告诉您。案例示例如下:
/Users/user/IDE/project $ j 1.8
/Users/user/IDE/project $ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.265-b01, mixed mode)
/Users/user/IDE/project $ j 13
/Users/user/IDE/project $ java -version
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
/Users/user/IDE/project $ j 1.7
Unable to find any JVMs matching version "1.7".
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder