如何更改mac上的Java默认版本?
当前回答
如果你有多个版本,并且你想使用一个特定的版本来运行一些东西,请使用这个例子:
/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar
其他回答
在~/中添加以下内容。Bash_profile,并设置相应的默认Java版本。
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
# default to Java 8
java8
我使用macOS,并使用brew安装java。
编辑: 如果你不使用bash,请更新正确的shell文件,例如,如果你使用zsh,那么它将是~/.zshrc
以前我在.zshrc中使用别名,以便在版本之间轻松切换,但今天我使用SDKMAN。 SDKMAN还可以为系统设置默认java,以及下载和安装新的java版本。
一旦安装了sdkman,您就可以执行类似于nvm工具处理节点版本的命令。
Java将列出您的系统上可用的Java版本以及可在线安装的Java版本,包括您可以在SDK使用,SDK默认和SDK安装命令中使用的标识符。
例如,安装Amazon Corretto 11.0.8并询问它是否应该是新的默认值,这样做: SDK安装Java 11.0.8-amzn
我还经常使用的一个特性是.sdkmanrc文件。 如果你把它放在你机器上的一个目录中,并在该目录中运行sdk env命令,那么你可以配置只在该目录中使用的工具版本。也可以使用sdkman_auto_env=true配置使sdkman自动切换工具版本。
sdkman还支持为JVM处理其他工具,如gradle, kotlin, maven等等。
欲了解更多信息,请访问https://sdkman.io/usage#env
除了上面的答案,我在我的.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)
检查Java版本:Java -version
版本切换:https://devqa.io/brew-install-java/
开放的~ / . bash_profile
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
别名java8=“出口JAVA_HOME=$ java_8_homs” 别名java11=“出口JAVA_HOME=$ java_11_homs”
源~ / . bash_profile
当我们切换到java11或java8时,java -version命令没有显示正确的版本。
在这种情况下,使用mvn -version查看用于构建解决方案的正确java版本
这个答案试图解决:当在macOS El Capitan或更新版本(Sierra, High Sierra, Mojave)上为开发目的安装了多个JDK版本时,如何控制系统范围内的java版本(不仅仅是在当前运行的shell中)。据我所知,目前没有一个答案这样做(*)。
作为一名开发人员,我使用几个jdk,并且我想轻松地从一个jdk切换到另一个jdk。通常我有最新的稳定的用于一般用途,其他的用于测试。但我不希望系统(例如,当我启动我的IDE时)使用我目前拥有的最新的“早期访问”版本。我想控制系统的默认值,这应该是最新的稳定。
以下方法至少适用于Java 7到12(撰写本文时为早期访问),适用于Oracle JDK或OpenJDK(包括2018年10月中旬之后由AdoptOpenJDK生成的构建)。
无需第三方工具的解决方案:
将所有jdk保留在默认位置,在/Library/Java/JavaVirtualMachines下。系统默认选择最高版本。 要在默认情况下排除一个JDK,请重命名它的Contents/Info。plist到Info.plist.disabled。当$JAVA_HOME指向JDK,或者在脚本或配置中显式引用它时,仍然可以使用该JDK。它将被系统的java命令忽略。
系统启动器将使用那些有Info的JDK中最高版本的JDK。plist文件。
在shell中使用备用JDK时,从现有的答案中选择您的方法(jenv,或/usr/libexec/java_home周围的自定义别名/脚本,等等)。
调查细节在此要点。
(*) Current answers are either obsolete (no longer valid for macOS El Capitan or Sierra), or only address a single JDK, or do not address the system-wide aspect. Many explain how to change $JAVA_HOME, but this only affects the current shell and what is launched from there. It won't affect an application started from OS launcher (unless you change the right file and logout/login, which is tedious). Same for jenv, it's cool and all, but as far as I can tell it merely changes environment variables, so it has the same limitation.
推荐文章
- Intellij IDEA Java类在保存时不能自动编译
- 何时使用Mockito.verify()?
- 在maven中安装mvn到底做什么
- 不可变与不可修改的集合
- 如何在JSON中使用杰克逊更改字段名
- GSON -日期格式
- 如何从线程捕获异常
- 无法解析主机"<URL here>"没有与主机名关联的地址
- 如何在Java中打印二叉树图?
- String.format()在Java中格式化双重格式
- 在Mac OS X上哪里安装Android SDK ?
- com.jcraft.jsch.JSchException: UnknownHostKey
- Java中的操作符重载
- 如何加速gwt编译器?
- 在Hibernate中重新连接分离对象的正确方法是什么?