はじめに(経緯)
「せんせー、Mavenがなんかうまく動きません」
というわけで、初学者向けにまとめておく。
プロジェクトと動作環境のJDK Versionの不一致
mvn package
やmvn jetty:run
でプロジェクトのパッケージ化や動作をさせようとする際に、次のようなエラーが発生する。
Fatal error compiling: invalid target release: x.x
Fatal error compiling: 1.8は無効なターゲット・リリースです
Unsupported major.minor version XX.X
こうしたときは、Mavenが、maven-compiler-pluginで指定されたプロジェクトのJDKのバージョンよりも古いバージョンのJavaで動作している。
原因の一例
Mac OSXであれば、Appleから提供されるJDKとOracleから提供されるJDK(やOpenJDK)が混在している環境で、適切にJAVA_HOMEを指定できていないなど。
Windowsであれば、必要なバージョンのJDKがインストールされていなかったり、環境設定のJAVA_HOMEが古いJDKを指定しているなど。
チェック方法
$ java -version
# JavaのVersionが表示される
$ mvn -version
# 表示されるJava versionもしくはJava homeの値が、
# プロジェクトで想定しているバージョンと一致しているかを確認する
回復手順の一例
maven-compiler-pluginに対応するバージョンのJDKをインストールする。
インストールされている状態であれば、シェルにJAVA_HOMEのパスを適切に設定する。
Mac OSXであれば.bash_profileなどに以下の様に設定。
$ vim ~/.bash_profile
# JDK8を利用する場合
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
$ mvn -version
# 表示されるJava versionもしくはJava homeの値が、
# プロジェクトで想定しているバージョンと一致しているかを確認する
Windowsであれば、環境設定からJAVA_HOMEを対応するバージョンのJDKに指定しなおす。
参考
Fatal error compiling: invalid target release: x.x
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project xxx: Fatal error compiling: invalid target release: 1.8 -> [Help 1]
日本語の場合
maven-resources-plugin:2.5に起因するMavenプロジェクト作成/インポートのトラブル
IDE(Eclipse)でmavenプロジェクトを作成/インポートしようとすると、上記のPlug-inが起因となったエラーのダイアログが発生し、Javaプロジェクトとして構築されない。
原因の一例
mavenでダウンロードしたプラグインのキャッシュ等に問題がある(と思われる)。
回復手順の一例
- ネットワーク接続が正常に行える環境かを確認する。
- .m2/repository ディレクトリを削除し、mavenプロジェクトの作成/インポートを再実行する。
$ cd ~/.m2
$ rm -R repository
参考
プロキシ環境下でのトラブル
- BYODしてるノートPCなどで、家では実行できたmvnコマンドがプロキシ環境下では実行できない(orその逆)
- IDEのProxyは外したのにMavenリポジトリに接続できない
原因の一例
Eclipseなどの一部のIDEでは、MavenのProxy設定を ${HOME}/.m2/settings.xml に任せている1ので、環境にあわせて編集する必要がある。
回復手順の一例
Proxy環境下で動作しない場合は、Proxy設定が行われているか確認する。
Proxy環境外で動作しない場合は、Proxy設定を外しているかを確認する。具体的には、Proxy設定の中のactive要素の値をfalseに変更すれば、Proxy設定が外れる。
<settings>
<proxies>
<proxy>
<active>false</active>
<!--以下略-->
Proxy環境下に戻ったときは、設定も戻しておくことを忘れないように。
おわりに
今後も新たに掲載できるものが増えていけば更新する。
- デフォルト設定の場合。変更している場合は適宜ファイルパスを読み替える。↩