情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Maven+Eclipse(m2e)での「Please ensure you are using JDK」対策

Eclipse (60) Java (38) Maven (19)

EclipseのMavenプラグイン(m2e)からcompiler:compileを実行すると、次のようなエラーが表示されることがあります。

Please ensure you are using JDK 1.4 or above and not a JRE (the com.sun.tools.javac.Main class is required).

このエラーの回避方法についてメモしておきます。環境はMaven 3.0.2 + m2e 1.0.200.20111228-1245です。OSはWindows 7 64bitです。

エラー文の全体

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 408 source files to ...\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] Unable to locate the Javac Compiler in:
  C:\Program Files\Java\jre7\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.649s
[INFO] Finished at: ...
[INFO] Final Memory: 10M/490M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-cli) on project ...: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar
[ERROR] Please ensure you are using JDK 1.4 or above and
[ERROR] not a JRE (the com.sun.tools.javac.Main class is required).
[ERROR] In most cases you can change the location of your Java
[ERROR] installation by setting the JAVA_HOME environment variable.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

原因

原因は、Mavenが参照するjavaw.exeとしてJRE付属のものを指定してしまっていることです。

正しくは、JDK付属のものを指定しなければなりません。

チェック

実際にMavenが利用している「JAVA_HOME」がJDKを指しているかを確認するには「mvn -version」を実行すればOKです(Eclipseでの確認方法)。

ここで「Java home: 」の行にJDKへのパスが表示されていればOKなのですが、今回のエラーが表示された場合、ここがJREへのパスになっていると思われます。

対策

「Window>Preference>Java>Installed JREs」にある「Add...」から「Standard VM」を選択して「Next」をクリック。

ここで「JRE home」の横にある「Directory...」ボタンからJDKのフォルダ(例:jdk1.7.0_05)を指定します

これで「Finish」をクリックすると、「Installed JREs」にJDKのJREが追加されるので、それにチェックを入れて、デフォルトにします。

以上で作業終了です。こうすることで、上手く行きました。もっと上手にやる方法があればよいのですが。。。

うまくいかなかった対策1:eclipse.iniの変更

eclipse.exeと同じフォルダにある「eclipse.ini」を編集します。

編集前は、こんな感じになっていると思います。

eclipse.ini

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m

この「-vmargs」の行の一つ上に

-vm
C:\Program Files\Java\jdk1.7.0_05\bin\javaw.exe

という2行を追加します。これを追加してからeclipse.exeを再起動します。

しかし、eclipseの実行されるJREは変更されるものの、Mavenが参照するJREに変化はありませんでした。

うまくいかなかった対策2:JAVA_HOMEの設定

環境変数「JAVA_HOME」を設定すればいいだろう、と素直に思うのですが、実はMaven(m2e)は環境変数JAVA_HOMEの設定を参照してくれるわけではないようです(参考資料参照)。

参考

コメント(0)

新しいコメントを投稿