jenv

バージョン管理JavaJDK開発環境CLIUNIX系ツール

GitHub概要

jenv/jenv

Manage your Java environment

ホームページ:http://www.jenv.be
スター6,277
ウォッチ69
フォーク392
作成日:2013年1月24日
言語:Shell
ライセンス:MIT License

トピックス

なし

スター履歴

jenv/jenv Star History
データ取得日時: 2025/7/20 02:59

言語バージョン管理ツール

jenv

概要

jenvは、複数のJavaバージョンを管理するためのコマンドラインツールです。rbenvにインスパイアされて開発され、プロジェクトごとに異なるJDKバージョンを使用できます。JAVA_HOME環境変数を自動的に管理し、MavenやGradleなどのビルドツールとシームレスに統合されます。

詳細

主な特徴

  • JAVA_HOME自動管理: 環境変数を自動的に設定・更新
  • プロジェクト別管理: .java-versionファイルによる自動切り替え
  • ビルドツール統合: Maven、Gradle、Antと完全互換
  • 複数JDK共存: Oracle JDK、OpenJDK、AdoptOpenJDKなど
  • プラグインシステム: 機能拡張が可能
  • シェル統合: bash、zsh、fishをサポート

動作原理

jenvはshimディレクトリをPATHに追加し、javaコマンドをインターセプトします。実行時に適切なJDKバージョンを判定し、JAVA_HOMEを設定してから実際のJavaコマンドを実行します。

重要な注意点

jenvはJDKのインストールは行いません。事前にJDKをインストールし、jenvに登録する必要があります。これはpyenvやrbenvとは異なる点です。

メリット・デメリット

メリット

  • 軽量: JDKの管理のみに特化したシンプルな設計
  • 柔軟性: 既存のJDKインストールを活用
  • プロジェクト分離: プロジェクトごとの独立したJava環境
  • IDE対応: IntelliJ IDEA、Eclipseとの連携
  • 標準的な動作: JAVA_HOMEベースで既存ツールと互換
  • 複数ベンダー対応: 様々なJDKディストリビューションに対応

デメリット

  • JDKインストール機能なし: 別途JDKのインストールが必要
  • Windows非対応: UNIX系OSのみサポート
  • 初期設定の複雑さ: JDKの手動登録が必要
  • 更新の手間: 新しいJDKバージョンは手動で追加
  • 開発停滞: 最近のアップデートが少ない

参考ページ

書き方の例

インストール(Linux/macOS)

# Gitクローンによるインストール
git clone https://github.com/jenv/jenv.git ~/.jenv

# macOSではHomebrewも使用可能
brew install jenv

# Linux(LinuxBrew)
brew install jenv

シェル設定(.bashrcまたは.zshrcに追加)

# jenvのパス設定
export PATH="$HOME/.jenv/bin:$PATH"

# jenvの初期化
eval "$(jenv init -)"

# JAVA_HOME自動設定の有効化(重要)
eval "$(jenv enable-plugin export)"

# 設定を反映
source ~/.bashrc  # または source ~/.zshrc

JDKのインストールと登録

# JDKのインストール(例:macOSでHomebrew使用)
brew install openjdk@17
brew install openjdk@11
brew install openjdk@8

# JDKのインストール(例:Ubuntu)
sudo apt update
sudo apt install openjdk-17-jdk
sudo apt install openjdk-11-jdk
sudo apt install openjdk-8-jdk

# インストール済みJDKをjenvに登録
jenv add /usr/lib/jvm/java-17-openjdk-amd64
jenv add /usr/lib/jvm/java-11-openjdk-amd64
jenv add /usr/lib/jvm/java-8-openjdk-amd64

# macOSの場合の登録例
jenv add /Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home
jenv add $(/usr/libexec/java_home -v 17)

基本的な使い方

# 登録済みJDKバージョンの確認
jenv versions

# 利用可能なJDKの詳細表示
jenv versions --bare

# グローバルバージョンの設定
jenv global 17.0

# 現在のバージョン確認
jenv version
java -version

# JAVA_HOMEの確認
echo $JAVA_HOME

プロジェクトごとの管理

# プロジェクトディレクトリに移動
cd /path/to/my-java-project

# このプロジェクト用のJavaバージョンを設定
jenv local 11.0

# .java-versionファイルが作成される
cat .java-version
# 11.0

# 別のプロジェクトで異なるバージョンを使用
cd /path/to/legacy-project
jenv local 1.8
java -version  # Java 8が使用される

一時的なバージョン切り替え

# 現在のシェルセッションのみでバージョンを変更
jenv shell 17.0

# 元に戻す
jenv shell --unset

プラグインの管理

# 利用可能なプラグインの確認
jenv plugins

# exportプラグインの有効化(JAVA_HOME自動設定)
jenv enable-plugin export

# Mavenプラグインの有効化
jenv enable-plugin maven

# Gradleプラグインの有効化
jenv enable-plugin gradle

# プラグインの無効化
jenv disable-plugin maven

JDKの管理

# 新しいJDKの追加
jenv add /path/to/new/jdk

# エイリアスの作成
jenv alias oracle64-17.0.2 oracle-17

# JDKの削除
jenv remove 11.0.2

# 特定のバージョンの詳細パスを表示
jenv which java
jenv which javac

MavenおよびGradleとの統合

# Mavenプロジェクトでの使用
cd /path/to/maven-project
jenv local 11.0
mvn --version  # Java 11が使用される

# Gradleプロジェクトでの使用
cd /path/to/gradle-project
jenv local 17.0
gradle --version  # Java 17が使用される

# プロジェクトのpom.xmlやbuild.gradleと連携
# JAVA_HOMEが自動的に設定されるため、追加設定不要

トラブルシューティング

# jenvの再初期化
jenv rehash

# 設定の確認
jenv doctor

# JDKパスの確認
jenv which java

# 環境変数の確認
env | grep JAVA

# jenvのアップデート
cd ~/.jenv
git pull