当前位置: 首页 > news >正文

jenv:管理多个 Java 版本的命令行工具

文章目录

  • jenv:管理多个 Java 版本的命令行工具

jenv:管理多个 Java 版本的命令行工具

jenv 是一个 Java 环境管理工具,从 rbenv 演化而来,在 GitHub 上有 6,620 个 Star。

做 Android 开发的人经常会遇到这样的问题:构建工具要求 Java 8,但服务端项目用的是 Java 11 或更高版本。每次切换项目都要手动改 JAVA_HOME,路径写错一个字符就可能编译失败。jenv 就是来解决这个问题的。

jenv 本身不负责安装 Java,它只管版本切换和环境变量配置。你需要先用系统包管理器把 Java 装好,再通过jenv add把路径注册进去。

版本切换的三种模式

jenv 支持三个层级的版本设置:

  • global:全局默认版本,优先级最低
  • local:目录级别,会在当前目录生成.java-version文件,进入该目录自动生效
  • shell:仅在当前终端会话中生效,优先级最高

多个层级同时存在时,高优先级覆盖低优先级。比如 global 设的是 17,shell 设的是 11,最终用的就是 11。

安装和配置

macOS 用户用 Homebrew 装就行:

brew install jenv

Linux 用户也可以从源码安装,克隆仓库到~/.jenv目录即可。

装完后在 shell 配置文件里加一行初始化命令:

# bash echo 'eval "$(jenv init -)"' >> ~/.bash_profile # zsh echo 'eval "$(jenv init -)"' >> ~/.zshrc

重启终端后生效。Fish shell 也有支持,不过官方标注为未充分测试。

接下来把已安装的 Java 注册进去:

jenv add "$(/usr/libexec/java_home)"

jenv versions查看已注册的版本列表。切换版本用jenv globaljenv localjenv shell,加--unset可以取消设置。

安装完成后可以用jenv doctor检查状态,它会告诉你 jenv 是否正确加载、JAVA_HOME 是否设置、Java 二进制是否在 shim 路径中。如果哪里有问题,输出会直接标红提示。

插件系统

要让 jenv 自动设置 JAVA_HOME,需要启用 export 插件:

jenv enable-plugin export

除此之外,jenv 还内置了 gradle、maven、ant、lein、sbt 等插件。启用后,运行对应构建工具时会自动注入 JVM 参数。比如启用 gradle 插件后,GRADLE_OPTS会被自动设置,你不用再手动配置。

典型使用场景

假设你同时维护一个 Android 项目和一个 Spring Boot 服务。Android 项目需要 Java 8,Spring Boot 用 Java 21。你可以在 Android 项目根目录执行jenv local 1.8,在 Spring Boot 项目根目录执行jenv local 21。之后进入各自目录时,jenv 会自动切换版本,JAVA_HOME 也会跟着变。

jenv 适合需要在多个 Java 版本之间频繁切换的开发者。Android 开发是典型场景,构建工具对 Java 版本敏感,经常需要固定到某个特定版本。服务端开发如果同时维护多个项目,每个项目用不同的 JDK,jenv 也能省不少事。

具对 Java 版本敏感,经常需要固定到某个特定版本。服务端开发如果同时维护多个项目,每个项目用不同的 JDK,jenv 也能省不少事。

http://www.jsqmd.com/news/1075833/

相关文章:

  • 汽车质检从人工抽检到AI全检:四种感知技术如何重构制造质量体系
  • 数字孪生体实战指南:打造高保真AI认知镜像
  • Claude 3.5 Sonnet如何让AI编排层‘归零’
  • 2026亚马逊广告优化指南:如何提高大促期间广告ROI?
  • Stimulsoft参数面板自动显示变量Description如何关闭?
  • 提前规划 PCB 布局!一站式 AI 平台打通器件选型、成熟参考方案
  • 如何用开源LibreSignage在3天内搭建专业数字标牌系统
  • EDWARDS YT76-Z2-Z20控制器单元
  • 3步永久免费解锁IDM:开源激活脚本完整使用指南
  • AI漫画翻译APP:MT阅读器,手机一键翻译日漫教程 MT阅读器、AI漫画翻译、漫画翻译APP、漫画OCR识别、日漫翻译工具、手机漫画翻译、AI翻译漫画、安卓漫画阅读器、悬浮窗翻译、漫画OCR软件
  • 如何用Flowframes实现专业级AI视频插帧:新手快速上手指南
  • Sunshine游戏串流服务器:打造个人专属的跨平台云游戏系统
  • vLLM 部署避坑指南,解决 Instinct GPU 上的编译报错与依赖冲突
  • AI回答品牌解释率的自动化评估系统设计
  • TrollInstallerX完整指南:如何在iOS设备上快速安装TrollStore
  • 终极指南:5分钟用Python实现抖音直播数据实时抓取
  • 算力“新中间层”:Token分销模式兴起与商业逻辑重构
  • 2026年|降AI收藏!学长实测10款降AI率软件红黑榜:论文降AI避坑(含免费降低AI率办法)
  • Neo4j Python Driver:图数据库的官方 Python 驱动
  • AI+复合材料/CFD 机器学习+水泥基复合材料+岩土工程
  • 我备份了3年,数据还是全丢了:90%的人都在犯的3个致命错误
  • AI算力与电网适配:从谐波治理到本地惯量增强的工程实践
  • TurtleBot3 LDS激光雷达深度入门:硬件原理、ROS驱动与故障排查
  • 深度解析STS-Bcut:基于必剪API的自动化语音转字幕实战指南
  • OpCore Simplify深度解析:从技术原理到实战应用的黑苹果自动化革命
  • 第8章 第一阶段项目:命令行成绩统计器
  • 四门超级跑车Star Matrix
  • 2026年高效利器:抖音、B站、简书图文内容一键自动分发软件
  • GitHub Desktop中文界面一键汉化指南:告别英文困扰,享受母语开发体验
  • 5个实用技巧:使用Dism++免费系统优化工具快速提升电脑性能