Eclipse 2018-09 не будет компилировать исходный код Java 11; думает, что он ниже 1,7

Я запускаю Eclipse 2018-09 (4.9.0) в Windows 10. Я использую Open JDK 11 GA. У меня есть проект Maven, который был указан как исходный код Java 8.

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Это компилируется с использованием Maven 3.5.3 в командной строке. Это также отлично компилируется с использованием Eclipse Eclipse 2018-09 (4.9.0).

Я сменил скомпилированные версии Java на Java 11:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>11</maven.compiler.source>
  <maven.compiler.target>11</maven.compiler.target>
</properties>

Это все еще отлично работает в командной строке с использованием Maven 3.5.3. Но в Eclipse 2018-09 я получаю ошибки повсюду:

  • '<>' operator is not allowed for source level below 1.7
  • Constructor references are allowed only at source level 1.8 or above
  • Default methods are allowed only at source level 1.8 or above

Вы поняли эту идею.

Я уже использовал Alt+F5 для обновления моего проекта Maven (и подпроектов) в Eclipse. Я сделал полную чистку и перестроил.

Поскольку это компилируется с Maven в командной строке, это должно быть проблемой Eclipse, не так ли? Конечно, Eclipse не поддерживает все новые функции Java 11, но этот код не имеет специфических особенностей Java 11. Что не так?

Ответ 1

Обновление: Java 11 полностью интегрирована в Eclipse, начиная с версии 4.10 (выпущена 2018-12-19), поэтому больше не нужно устанавливать этот плагин.


По какой-то причине вам необходимо установить дополнительный плагин Eclipse " Поддержка Java 11 для Eclipse 2018-09 (4.9) " (даже в Eclipse Photon 4.9)

Похоже, что плагин больше не доступен в Eclipse Marketplace. Если кто-то найдет ссылку для установки, пожалуйста, добавьте ее здесь:

Работает для Eclipse - STS 4.0.1 (на основе Eclipse 4.9), Maven 3.6.0, с этой конфигурацией подключаемого модуля Maven.

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>                
        </plugin>

Ответ 2

Похоже, Eclipse не подбирает версии из pom.

Я только что проверил вашу конфигурацию pom и проверил, что она работает, либо предоставляя исходные и целевые свойства компилятора, как в вопросе или новом свойстве release, как описано в этом ответе, используя последнюю версию Java 11 Support for Eclipse 2018-09.

Важно, чтобы JDK 11 был правильно настроен в настройках Eclipse. Добавьте JDK 11 на страницу настроек "Установленная JRE", а затем сопоставьте ее с JavaSE-11 на странице предпочтений "Исполняющая среда". В противном случае обновление проекта Maven приведет к использованию JDK по умолчанию, что, вероятно, является проблемой, с которой вы сталкиваетесь.

Ответ 3

Эта проблема исправлена в Eclipse 2018-12. Обновление до этой версии решит вашу проблему.