タイトル: JRE(JVM)のJavaのバージョン確認方法
SEOタイトル: 【Tomcat】JRE(JVM)のJavaのバージョン確認方法
| この記事の要点 |
|---|
|
方法 1: java -version (シェル)
$ java -version
openjdk version "17.0.8" 2023-07-18 LTS
OpenJDK Runtime Environment Temurin-17.0.8+7 (build 17.0.8+7-LTS)
OpenJDK 64-Bit Server VM Temurin-17.0.8+7 (build 17.0.8+7-LTS, mixed mode, sharing)
出力の見方:
- 17.0.8: メジャー.マイナー.パッチ (Java 17)
- LTS: 長期サポート (Long Term Support)
- OpenJDK: 配布元(OpenJDK / Oracle JDK / Temurin / Corretto 等)
- 64-Bit Server VM: アーキテクチャ (32 / 64 bit) と VM タイプ
方法 2: javac -version (JDK のみ)
$ javac -version
javac 17.0.8
# javac がなければ JRE のみで JDK がインストールされていない
# → 開発するなら JDK のインストールが必要
方法 3: java --version (新しい形式)
Java 9 以降は --version(ダブルハイフン)も使えます:
$ java --version
openjdk 17.0.8 2023-07-18 LTS
OpenJDK Runtime Environment Temurin-17.0.8+7 (build 17.0.8+7-LTS)
OpenJDK 64-Bit Server VM Temurin-17.0.8+7 (build 17.0.8+7-LTS, mixed mode, sharing)
JAVA_HOME の確認
環境変数 JAVA_HOME が指す JDK ディレクトリ:
# Linux / Mac
$ echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk
# Windows
> echo %JAVA_HOME%
C:\Program Files\Eclipse Adoptium\jdk-17.0.8.7-hotspot
# PowerShell
PS> $env:JAVA_HOME
実体のパスを確認
# java コマンドの実体
$ which java
/usr/bin/java
$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 May 15 2026 /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 43 May 15 2026 /etc/alternatives/java -> /usr/lib/jvm/java-17-openjdk/bin/java
# Windows
> where java
C:\Program Files\Eclipse Adoptium\jdk-17.0.8.7-hotspot\bin\java.exe
実行中の Java プロセスのバージョンを確認
# Java プロセス一覧
$ jps -lvm
1234 com.example.MyApp -Xmx2g
1235 org.apache.catalina.startup.Bootstrap -Dcatalina.home=/opt/tomcat ...
# プロセスの実行ファイルを特定 (Linux)
$ ls -l /proc/1234/exe
/proc/1234/exe -> /usr/lib/jvm/java-17/bin/java
# プロセスのバージョン情報 (jcmd)
$ jcmd 1234 VM.version
1234:
OpenJDK 64-Bit Server VM version 17.0.8+7-LTS
JDK 17.0.8
# プロセス起動時のコマンドライン
$ cat /proc/1234/cmdline | tr "\0" " "
/usr/lib/jvm/java-17/bin/java -Xmx2g -jar /opt/myapp/app.jar
プログラム内からバージョン取得
public class JavaVersionInfo {
public static void main(String[] args) {
System.out.println("Java Version: " + System.getProperty("java.version"));
// 例: 17.0.8
System.out.println("Java Vendor: " + System.getProperty("java.vendor"));
// 例: Eclipse Adoptium
System.out.println("JVM Name: " + System.getProperty("java.vm.name"));
// 例: OpenJDK 64-Bit Server VM
System.out.println("JVM Version: " + System.getProperty("java.vm.version"));
// 例: 17.0.8+7-LTS
System.out.println("Java Home: " + System.getProperty("java.home"));
// 例: /usr/lib/jvm/java-17/jre
System.out.println("OS: " + System.getProperty("os.name"));
System.out.println("OS Arch: " + System.getProperty("os.arch"));
// Java 9+ の Runtime API
Runtime.Version v = Runtime.version();
System.out.println("Feature: " + v.feature()); // 17
System.out.println("Interim: " + v.interim()); // 0
System.out.println("Update: " + v.update()); // 8
System.out.println("Build: " + v.build().orElse(0)); // 7
}
}
Maven / Gradle で参照する Java を確認
# Maven
$ mvn -version
Apache Maven 3.9.4
Java version: 17.0.8, vendor: Eclipse Adoptium
Java home: /usr/lib/jvm/java-17-openjdk
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-25-generic", arch: "amd64", family: "unix"
# Gradle
$ ./gradlew --version
Gradle 8.3
Kotlin: 1.9.0
JVM: 17.0.8 (Eclipse Adoptium 17.0.8+7-LTS)
OS: Linux 5.15.0-25-generic amd64
複数バージョンの切替
Linux/Mac (update-alternatives)
# 候補一覧
$ sudo update-alternatives --config java
There are 3 choices for the alternative java:
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-21-openjdk/bin/java 2100 auto mode
* 1 /usr/lib/jvm/java-17-openjdk/bin/java 1700 manual mode
2 /usr/lib/jvm/java-11-openjdk/bin/java 1100 manual mode
# 番号を入力して切替
SDKMAN!
$ sdk list java
$ sdk install java 21.0.1-tem
$ sdk use java 21.0.1-tem # シェル内のみ
$ sdk default java 21.0.1-tem # デフォルト
Windows
JAVA_HOME 環境変数を切り替え、PATH の %JAVA_HOME%\bin を有効化。