如何在OSX上设置或更改默认的java(jdk)版本?

bz4sfanl  于 2021-07-03  发布在  Java
关注(0)|答案(23)|浏览(368)

如何在mac上更改java的默认版本?

5q4ezhmt

5q4ezhmt16#

首先找出环境变量的存储位置-
emacs公司
bash\u简介
zshrc文件
设置环境变量的步骤:-
从java下载jdk
双击安装
现在在文件中设置环境变量
答。对于emacs.profile,您可以使用此链接或查看下面的屏幕截图

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版本。。

y1aodyip

y1aodyip17#

基于@markhellewell answer,我创建了两个别名函数,可以为您实现这一点。只需将这些添加到shell启动文件中


# 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"; 
  export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; 
  java -version; 
}

https://gist.github.com/noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4

ivqmmu1c

ivqmmu1c18#

从苹果官方的java\ U主页(1)手册页:


**USAGE**

   /usr/libexec/java_home  helps  users  set a $JAVA_HOME in their login rc files, or provides a way for
   command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
   tecture  requirement.  The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
   which is useful for starting Java command-line tools from launchd plists without hardcoding the  full
   path to the Java command-line tool.

   Usage for bash-style shells:
          $ export JAVA_HOME=`/usr/libexec/java_home`

   Usage for csh-style shells:
          % setenv JAVA_HOME `/usr/libexec/java_home`
g0czyy6m

g0czyy6m19#

如果您有多个版本,并且希望使用特定的版本运行某个程序,请使用以下示例:

/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar
ddhy6vgd

ddhy6vgd20#

安装jdk,而不仅仅是jre

/usr/libexec/java_home -v 1.8

给予

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

下一个

touch .bash_profile

open -a TextEdit.app .bash_profile

文本编辑将显示一个空白页,您可以填写。
添加到文档: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home 在终端:

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

请尝试以下命令: javac -version 应输出:

javac 1.8.0_111
qaxu7uf2

qaxu7uf221#

如果你仍然无法设置它。使用此命令。
导出java\u主页= /usr/libexec/java_home -v 1.8 那你得用这个。
导出java\u主页= $(/usr/libexec/java_home -v 1.8) 它肯定会起作用的。

v1l68za4

v1l68za422#

这个答案试图解决以下问题:在macos el capitan或更新版本(sierra、high sierra、mojave)上安装多个版本的jdk用于开发时,如何控制java版本的系统范围(不仅仅是在当前运行的shell中)。据我所知,目前没有一个答案是这样的(*)。
作为一个开发人员,我使用了几个jdk,我想很容易地从一个jdk切换到另一个jdk。通常我有一个最新的稳定的一般用途,和其他测试。但我不希望系统(例如,当我启动ide时)使用我目前拥有的最新“早期访问”版本。我想控制系统的默认值,这应该是最新的稳定。
以下方法至少适用于Java7到Java12(在撰写本文时提前访问),适用于oracle jdk或openjdk(包括2018年10月中旬之后由openjdk生成的版本)。

无第三方工具的解决方案:

将所有jdk保留在它们的默认位置 /Library/Java/JavaVirtualMachines . 默认情况下,系统将选择最高版本。
要在默认情况下排除拾取jdk,请重命名其 Contents/Info.plistInfo.plist.disabled . 当 $JAVA_HOME 指向它,或者在脚本或配置中显式引用。它将被系统的 java 命令。
系统启动器将使用jdk的最高版本在那些有 Info.plist 文件。
在使用备用jdk的shell中工作时,从现有答案中选择您的方法( jenv ,或自定义别名/脚本 /usr/libexec/java_home 等)。
调查的细节。
(*)当前的答案要么已经过时(不再适用于macos el capitan或sierra),要么只针对单个jdk,要么不针对系统范围的方面。许多人解释如何改变 $JAVA_HOME ,但这只会影响当前shell以及从中启动的内容。它不会影响从os启动程序启动的应用程序(除非您更改正确的文件和注销/登录,这很乏味)。对jenv来说也是一样,很酷,但据我所知,它只是改变了环境变量,所以它有同样的限制。

ufj5ltwl

ufj5ltwl23#

将以下命令添加到 ~/.zshenv 文件

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

相关问题