eclipseでプロジェクトをビルドした際に、Mavenのこんなエラーが出て半日ほど躓いたので、解決法やチェックポイントを残す。
環境
- Windows 7
- JDK8
- eclipse 4.6 neon
COMPILATION ERROR
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
結論から言うと、環境構築がちゃんとできてなかった。無念。
うちらのstack overflowでも同様の質問が多数あるので、みんな通る道のようである。
- Eclipse/Maven error: “No compiler is provided in this environment”
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
-
Maven Package Compilation Error
・・・etc
原因を探しているうちにいくつかのチェックポイントがあることがわかった。
- JAVA_HOME¥binへのパスが通っているか
- JAVA_HOME¥binにjavac.exeが存在するか
- JDKとMavenのバージョンが合っているか
というもの。
オレの場合は複合的な原因だった。残念。
JAVA_HOME¥binへのパスが通っているか
最近のJDKはインストールすると勝手にパスが通ってくれる。ここに。
C:¥ProgramData¥Oracle¥Java¥javapath
コマンドプロントで
java -version
と打つとjavaのバージョンが表示されるのでパスが通ってると思い込んでいた。
でも通っているのは、java.exe, javaw.exe, javaws.exeのシンボリックリンクに対してだった。
ちょっと違ってた。
なので、まずは環境変数JAVA_HOMEの設定と、JAVA_HOME¥binをPATHに追加したかを確認しよう。
JAVA_HOME¥binにjavac.exeが存在するか
無かった。
手順書がおかしかったんだと思う。
JDKとパブリックJREが同じインストールディレクトリになっていたせいで、javac.exeが失われていた。
JAVA_HOME¥binをPATHに追加したあとはこれを確認しよう。
javac -version
JDKとMavenのバージョンが合っているか
eclipse 4.6 neonとJDK8の組み合わせなら特に問題はない。
上記のJAVA_HOME¥binの件がまだ分かってなかった時にJDKのバージョンも6に下げた。
eclipse 4.6 neonに対しJDK6だとCOMPILATION ERRORになる。
リリースヒストリーであるが、
Mavenバージョンと必要なJDKバージョンの組み合わせ表にもなっている。
この表を見つけた時は感動した。
というわけで、インストールしているMavenとJDKのバージョンが合っているかを確認しよう。
Maven buildの構成時に指定するMavenのバージョンとJREのバージョンが合っているかも確認しよう。