システム開発

【Java】eclipseのJavaバージョンについて

アイコン名を入力

こんにちは、シロクマです!

みなさんは、JavaのIDE(統合開発環境)は何を使っていますか?

今日は無料で使えて利用者も多いIDE「eclipse」のtipsを紹介します!

Contents

eclipseのコンパイラ

eclipseを使ったJavaシステム開発を行う場合、意識すべきJavaバージョンが二つあります。

  1. プロジェクト作成時の「JREバージョン」
  2. プロジェクトで利用される「コンパイラバージョン」

プロジェクト作成時の「JREバージョン」

eclipseでツールバーより「ファイル>新規作成>プロジェクト」を選択すると「新規プロジェクト」ウィンドウが出てきます。そこで「Javaプロジェクト」を選択すると以下のようなウィンドウに切り替わります。

注目すべきは、赤枠の部分です。

このプロジェクトは、「Java11」環境で動くことを想定したシステム作成を行うため、「Adopt openjdk」の「jdk-11.0.10.9-hotspot」をプロジェクト固有のJREとして指定しています。

アイコン名を入力

作成するJavaプログラムがどんな環境で動くかと言うのは、プロジェクト作成時から意識しないとですね!

プロジェクトで利用される「コンパイラバージョン」

ここまでは良いのですが、問題は以下の赤枠です。

お分かりいただけるでしょうか?どういう訳か、eclipseは画像のプロジェクトで、Java1.4準拠という古いコンパイラを使うと宣言しているのです!

そのため、このままプロジェクトを作成するとよく分からないコンパイルエラーが出てしまい進行不可能になります。

※以下のPaths.getメソッドでコンパイルエラーになっています。通常、コンパイルエラーにならないのですが、「getメソッドは、そんな引数受け取れないよ!」と言われます。

なぜ、こんなことになるのかと言うと、このプロジェクトで使っているコンパイラー準拠レベルが古いからです。

では、コンパイラーの設定を確認してみましょう。

私が使っているeclipseは「Photon Release (4.8.0)」という2018年にリリースされたものですので利用中のバージョンによって選択可能なコンパイラー準拠レベルは異なると思います。

ここで注目すべきは、赤枠の中にコンパイラー準拠レベル「10」までしかない、ということです。

そうです。Java11を使う場合に適したコンパイラー準拠レベルが存在しないのです!

そして、さらに驚くべきことに適したものが存在しないJava11を指定してプロジェクトを作成すると、そのプロジェクトのコンパイラーが「java1.4」準拠コンパイラーになるのです。

普通、適した準拠コンパイラーがなければ、利用できる最新のコンパイラー(上記画像だとJava10準拠コンパイラー)を使うようにしないかな? と思います。。。なんという罠。

アイコン名を入力

そもそも、古いバージョンのeclipse使うなってことですかね!

eclipseはちょっと前からリリースの考え方が変わっていますし、古いバージョンに拘る必要がないなら、適宜入れ替えた方がいいかもしれないですね!

まとめ

まとめです。eclipseでJavaシステム開発する際は以下のJavaバージョンに注意しないとです。

  1. プロジェクト作成時の「JREバージョン」
  2. プロジェクトで利用される「コンパイラバージョン」

特に②ですね。普段あまり意識しないのと、調べた限りあとから追加したりできないみたいなので。

まあ、結論としてはおとなしく最新のeclipseを使うのが良いのかな、と。