it-swarm.com.ru

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 . В чем дело?

14
Garret Wilson

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

Работает для 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>
4
Ralph

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

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

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

3
kapex

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

0
Dan Greening