ローカル環境のプログラミング言語のバージョンを切り替え macOS

ローカル環境のプログラミング言語のバージョンを切り替え macOS

Java

Javaのバージョンを切り替えようとした背景としては、mvn clean installを実行したところ、以下のエラーを受け取ったことが理由でした。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project ReleaseBuildApp: Fatal error compiling: java.lang.ExceptionInInitializerError: Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible: module jdk.compiler does not "opens com.sun.tools.javac.processing" to unnamed module @193594ad -> [Help 1]

Mavenの期待するバージョンと利用しているJavaのバージョンが異なる時に上記のエラーを受け取る事がわかりました(Refer: Maven Build Failure - Compiler Plugin )

たしかにpom.xmlでJava 8を期待するものとなっていました。

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
    <source>1.8</source>
    <target>1.8</target>
    </configuration>
</plugin>

一方で、ローカル端末の環境はJava 15でした。

$ java -version
java version "15.0.1" 2020-10-20
Java(TM) SE Runtime Environment (build 15.0.1+9-18)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)

ローカル環境ではこのバージョンのみ入っていました。

Java 8をインストールしますが、ライセンスの関係でOpenJDKが利用できないので、AdoptOpenJDKやCorretto,Zuluなどを入れます。ここではCorrettoを使用します。

以下のように実行することで、Javaのバージョンの切り替え完了です。

以下のように反映が適用されていることが確認できます。

環境変数JAVA_HOMEに代入された値は参考までに以下のような値です。

jenv

  • jenvを利用する方法もあります。jenvを利用することで、簡単に変えられるようにします。

Javaの現状のバージョンが以下の通りであるとします。

jenvをインストールします。

現在jenvを通してインストールされているJavaのバージョンは他にない状態です。

Java 8とJava 15をインストールします。

OpenJDK 17をインストールする場合は以下のように実行。

すると、jenvを通して以下のJavaのバージョンがインストールされたことが確認できます。

以下のようにバージョンを切り替えます。

Errors

java -versionをしてもうまく切り替わらない場合は、jenv doctorを実行します。

提示された解決方法を実行して、設定ファイルを読み込みます。

追記予定

Ruby - rbenv

Python - pyenv

Node.js - nodenv

Last updated