macOS 11 使用jenv管理 多版本jdk


废话

mac升级big sug系统后,之前使用的jdk切换命令有些问题,使用sdkman几天后,发现兼容性还是有一些问题的.最后还是切换成 oracle jdk,使用jenv管理

下载jdk就不废话了,记录一下安装jenv和开发环境配置的一些过程

安装软件

  1. 安装 homebrew,现在已经适配了
    安装命令:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 安装openjdk 如果需要maven ,可以直接安装maven,会自动依赖openjdk
    安装命令:

    brew install openjdk
    or 
    brew install maven
  3. 安装 jenv
    安装命令:

    brew install jenv
  4. 下载安装oracle jdk
    我这里安装的是1.8和11版本,对应安装自己需要的版本

配置

命令说明

执行jenv命令,可以看到jenv的帮助文档

$ jenv                            

jenv 0.5.4
Usage: jenv <command> [<args>]

Some useful jenv commands are:
   commands    List all available jenv commands
   local       Set or show the local application-specific Java version
   global      Set or show the global Java version
   shell       Set or show the shell-specific Java version
   rehash      Rehash jenv shims (run this after installing executables)
   version     Show the current Java version and its origin
   versions    List all Java versions available to jenv
   which       Display the full path to an executable
   whence      List all Java versions that contain the given executable
   add         Add JDK into jenv. A alias name will be generated by parsing "java -version"

See `jenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/jenv/jenv/blob/master/README.md

查看安装的jdk位置

执行/usr/libexec/java_home -V 可以看到当前系统所有的jdk,

/usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    11.0.9 (x86_64) "Oracle Corporation" - "Java SE 11.0.9" /Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home
    1.8.271.09 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    1.8.0_271 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
/Users/bobo/.jenv/versions/1.8

添加jdk到jenv管理中

使用jevn add <path>命令将jdk添加到jenv管理中.例如

$ jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home

oracle64-1.8.0.271 added
1.8.0.271 added
1.8 already present, skip installation

查看当前版本

使用jenv versions 命令,查看当前所有的版本,带*的是当前使用的版本,或者使用jenv version 查看当前使用的版本.

jenv version

  system
* 1.8 (set by /Users/bobo/.java-version)
  1.8.0.271
  11
  oracle64-1.8.0.271

设置系统jdk版本

使用jenv local <version name> 设置系统当前版本,例如

jenv local 1.8

删除版本

使用jenv remove <version name> 删除管理的版本.

注意,这里只会删除jenv管理列表,不会卸载jdk,jdk仍然在磁盘中.

插件设置

设置 JAVA_HOME

使用jenv local 设置默认jdk后,JAVA_HOME 仍然是空的,如果有其他软件或命令需要使用环境变量会找不到jdk.通过使用插件解决.执行命令

jenv enable-plugin export

安装export插件后,再切换jdk版本会同步设置JAVA_HOME环境变量

设置mavne使用的jdk版本

如果希望使用maven使用的jdk版本和jenv管理的版本一直,可以安装mavne插件.执行命令

jenv enable-plugin maven
mvn -v

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec
Java version: 1.8.0_271, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"

文章作者: 鱍鱍
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 鱍鱍 !
  目录