如何更改mac上的Java默认版本?
当前回答
四个简单的步骤使用终端的人谁使用默认进程..:)
echo $JAVA_HOME给出当前的java home。例如:/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) 出口JAVA_HOME = ' /图书馆/ Java / JavaVirtualMachines / openjdk-11.0.2。jdk/Contents/Home'将更改java Home ..
其他回答
在不需要安装额外工具的情况下,让/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
这个答案试图解决:当在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.
四个简单的步骤使用终端的人谁使用默认进程..:)
echo $JAVA_HOME给出当前的java home。例如:/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) 出口JAVA_HOME = ' /图书馆/ Java / JavaVirtualMachines / openjdk-11.0.2。jdk/Contents/Home'将更改java Home ..
这有点棘手,但请尝试遵循在OS X 10.9 (Mavericks)上安装Java中描述的步骤。基本上,你得把你的别名更新为java。
循序渐进:
在安装JDK 1.7之后,您将需要执行sudo ln -snf命令来更改到当前java的链接。要做到这一点,打开Terminal并发出命令:
sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
注意,目录jdk1.7.0_51. conf。jdk可能会根据您安装的SDK版本而变化。
现在,您需要将JAVA_HOME设置为指向jdk_1.7.0_xx的位置。安装JDK。再次打开终端,输入:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"
您可以在您的.bashrc文件中添加上面的export JAVA_HOME行,以使java永久地存在于您的终端中
安装JDK,而不仅仅是JRE
/usr/libexec/java_home -v 1.8
给了
/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
next
touch .bash_profile
open -a TextEdit.app .bash_profile
TextEdit将显示您可以填写的空白页。
添加到文档: 出口JAVA_HOME = /图书馆/ Java / Home / JavaVirtualMachines / jdk1.8.0_111.jdk /内容
在终端:
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
试试下面的命令:
javac - version
应该输出:
javac 1.8.0_111
推荐文章
- 如何在交互式Python中查看整个命令历史?
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- Java生成两个给定值之间的随机数
- 如何有效地从数组列表或字符串数组中删除所有空元素?
- 比较JUnit断言中的数组,简洁的内置方式?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?
- 将Set<T>转换为List<T>的最简洁的方法
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用Java重命名文件
- URL从Java中的类路径加载资源
- .toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?
- Hibernate中不同的保存方法之间有什么区别?
- Java 8流和数组操作
- 在OSX中永久设置PATH环境变量