LinuxでMavenのJavaとシステムのJavaのバージョンが異なる場合の対応策

$ sudo update-alternatives --config java

をしてJava1.8を選択して、さらにJAVA_HOMEを適切に設定したはず(↓)ですが、なぜかMavenのJavaとシステムのJavaのバージョンが異なる状態で、Mavenでビルドしようとするとエラーが出る状態でした。

$ echo $JAVA_HOME
/usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt

$ mvn -v
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.7.0_40, vendor: Oracle Corporation
Java home: /usr/lib/jvm/jdk-7-oracle-armhf/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.18.7-v7+", arch: "arm", family: "unix"

$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

↑上記のようにmavenはJava 1.7、システムのJavaは1.8です。いったいどういうことなのでしょう。。。

$JAVA_HOMEは、/etc/environmentで設定済み↓でした。

$ cat /etc/environment 
JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt

いろいろと調べたところ、update-java-alternativesすればいいようです。

# インストールされているjava一覧を表示
$ update-java-alternatives -l
java-1.6.0-openjdk-armhf 1057 /usr/lib/jvm/java-1.6.0-openjdk-armhf
jdk-7-oracle-armhf 317 /usr/lib/jvm/jdk-7-oracle-armhf
jdk-8-oracle-arm-vfp-hflt 318 /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt

# ↑のjava 1.8を選択
$ sudo update-java-alternatives -s jdk-8-oracle-arm-vfp-hflt
update-alternatives: error: no alternatives for jhat
update-alternatives: error: no alternatives for jrunscript
update-alternatives: error: no alternatives for mozilla-javaplugin.so
update-alternatives: error: no alternatives for schemagen
update-alternatives: error: no alternatives for wsgen
update-alternatives: error: no alternatives for wsimport
update-alternatives: error: no alternatives for xjc

# mvnの確認
$ mvn -version
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.8.0, vendor: Oracle Corporation
Java home: /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.18.7-v7+", arch: "arm", family: "unix"

# javaの確認
$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

↑上記のように一致しました。MavenはJAVA_HOMEを無視してどこか別のところから読んでくるのでしょうか。。。全く意味不明ですがひとまず直ったのでよしとします。。。

追記@2015-04-26

↑の作業でmvnのバージョンが古いままのことがありました。どうやら環境変数が古いままだったようなので、一旦ログアウトして確認してみると正常になりました。


Bookmark the permalink.

Comments are closed.