专栏首页jouypubMac上使用Jenv管理多个JDK版本
原创

Mac上使用Jenv管理多个JDK版本

使用Java时会接触到不同的版本。大多数时候我在使用Java 8,但是因为某些框架或是工具的要求,这时不得不让Java 7上前线。一般情况下是配置JAVA_HOME,指定不同的Java版本,但是这需要人为手动的输入。如果又要选择其他版本,就需要对JAVA_HOME重新进行设置。终于,我发现了JEnv。

正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友。使用简单的命令就可以在不同的Java版本之间进行切换。如果你使用过rbenv,你会发现JEnv就如同rbenv的Java版一样。

基本使用: 在Mac OS下使用Homebrew安装JEnv:

> brew install jenv

安装成功后需要进行一下简单的配置,让它可以起作用:

> echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
> echo 'eval "$(jenv init -)"' >> ~/.bash_profile

好了,JEnv已经安装好了,让我们来看一下它找见哪个Java版本了:

> jenv versions
* system (set by /Users/bxpeng/.jenv/version)

它只找到了系统默认的Java,*表示当前选择的版本。尽管我已经下载了其他版本的Java,但是它并不会自动发现

和rbenv不同的是,JEnv不能自己安装任何版本的Java,所以需要我们手动安装好之后再用JEnv指向它们。

安装Java 7,可以在Oracle进行下载.它将安装到/Library/Java/JavaVirtualMachines/下;

安装Java 8,可以在Oracle进行下载.它将安装到/Library/Java/JavaVirtualMachines/下。

使用jenv add将Java 7、Java 8加入jenv中:

> jenv add /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/
1.7 added
1.7.0.71 added
oracle64-1.7.0.71 added
> jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/
1.8 added
1.8.0.25 added
oracle64-1.8.0.25 added

现在运行jenv versions会显示:

> jenv versions
* system (set by /Users/bxpeng/.jenv/version)
  1.7
  1.7.0.71
  oracle64-1.7.0.71
  1.8
  1.8.0.25
  oracle64-1.8.0.25

对于多余的版本使用jenv remove可以从jEnv中去掉不需要的Java版本:

> jenv remove 1.6
JDK 1.6 removed

整理后,再运行jenv versions会显示:

> jenv versions
* system (set by /Users/bxpeng/.jenv/version)
  1.7.0.71
  1.8.0.25

选择一个Java版本,运行jenv local,例如:

> jenv local 1.8.0.25
> java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

OK,我们已经成功地指定了某文件夹中local的Java版本。我们也可以运行jenv global设置一个默认的Java版本,运行jenv which java显示可执行的Java的完整路径。

你也可以在特定的文件夹下使用.java-version文件来设定Java的版本。当我需要在Project中使用Java 7时,仅仅需要把1.7.0.71作为内容保存在.java-version文件中,当进入该文件夹时,JEnv会自动地帮助我设定local的Java的版本。

欢迎订阅「K叔区块链」 - 专注于区块链技术学习

博客地址:http://www.jouypub.com

简书主页:https://www.jianshu.com/u/756c9c8ae984

segmentfault主页:https://segmentfault.com/blog/jouypub

腾讯云主页:https://cloud.tencent.com/developer/column/72548

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL复制表结构和数据

    mysql复制表有两种方式,create table as和create table like,这两者还是有差别,需要根据不同的使用场景去选择

    JouyPub
  • 优化Vue项目的文件大小

    在使用Vue搭建项目时,经常由于引入的库太多,导致打包后的文件体积非常大,特别是vendor.js。这就造成页面第一次打开很慢,如果在浏览器中调试页面(打开控制...

    JouyPub
  • UTC/GMT/CST几种常见的时间概述

     协调世界时,又称世界标准时间或世界协调时间,简称UTC,从英文“Coordinated Universal Time”/法文“Temps Universel ...

    JouyPub
  • 数据字典生成工具之旅(4):NPOI操作EXECL

           这篇会介绍NPOI读写EXECL,读写EXECL的组件很多,可以使用微软自己的COM组件EXECL.exe读写,不过这种方式限制很大。      ...

    用户1168362
  • 读《Java编程思想》

    虽千万人,吾往矣 2016-09-14 Java编程思想是一本对于初级程序员来说较高端的入门书。 他有两个特点: 在容器以及并发编程方面不深入,对于一些技术点...

    于霆霖
  • Java基础-脚本引擎

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • HDUOJ---2110

    Crisis of HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/3276...

    Gxjun
  • 从SAP最佳业务实践看企业管理(142)-物料收货

    库存类型: 非限制使用库存:没有限制使用,可以正常领料 质检库存:处于质检状态,不能领料 冻结库存:处于冻结状态,不能领料 非库存采购: 成本中心:低值易耗品,...

    SAP最佳业务实践
  • SRM常见用例和架构

    Streams Replication Manager(SRM)是一种企业级复制解决方案,可实现容错、可扩展且健壮的跨集群Kafka主题复制。SRM提供了动态更...

    大数据杂货铺
  • [Go 语言社区]测试模块之---utf8例子

    package main import ( "code.google.com/p/mahonia" "fmt" ) func main() { ...

    李海彬

扫码关注云+社区

领取腾讯云代金券