web-dev-qa-db-de.com

Eclipse 2018-09 kompiliert keine Java 11-Quelle. hält es für unter 1,7

Ich verwende Eclipse 2018-09 (4.9.0) unter Windows 10. Ich verwende Open JDK 11 GA. Ich habe ein Maven-Projekt, das als Java 8-Quellcode angegeben wurde.

<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>

Das lässt sich gut mit Maven 3.5.3 in der Kommandozeile kompilieren. Das lässt sich auch mit Eclipse Eclipse 2018-09 (4.9.0) gut kompilieren.

Ich habe die Java-Kompilierversion in Java 11 geändert:

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

Mit Maven 3.5.3 ist das in der Kommandozeile immer noch gut. In Eclipse 2018-09 bekomme ich jedoch überall Fehler:

  • '<>' 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

Du hast die Idee.

Ich habe bereits Alt+F5 verwendet, um mein Maven-Projekt (und seine Unterprojekte) in Eclipse zu aktualisieren. Ich habe eine komplette Reinigung durchgeführt und neu aufgebaut.

Da dies mit Maven in der Befehlszeile gut kompiliert werden kann, muss dies ein Eclipse-Problem sein, nicht wahr? Sicher, Eclipse unterstützt noch nicht alle neuen Java 11-Funktionen, aber dieser Code hat keine Java 11-spezifischen Funktionen . Was ist falsch?

14
Garret Wilson

Aus irgendeinem Grund müssen Sie ein zusätzliches Eclipse-Plugin installieren " Java 11-Unterstützung für Eclipse 2018-09 (4.9) " (auch in Eclipse Photon 4.9)

Funktioniert für Eclipse - STS 4.0.1 (basierend auf Eclipse 4.9), Maven 3.6.0, mit dieser Maven Compiler Plugin-Konfiguration

        <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

Es klingt, als würde Eclipse die Versionen nicht vom Pom abholen. 

Ich habe gerade Ihre POM-Konfiguration getestet und ihre Funktionsfähigkeit überprüft. Dazu habe ich entweder Compiler-Quell- und Zieleigenschaften wie in der Frage oder die neue Release-Eigenschaft angegeben, wie in dieser Antwort beschrieben. Dabei wird die neueste Java 11-Unterstützung für Eclipse 2018 verwendet -09 plugin. 

Es ist wichtig, dass das JDK 11 in den Eclipse-Voreinstellungen richtig eingerichtet ist. Fügen Sie das JDK 11 auf der Einstellungsseite "Installed JRE" hinzu und ordnen Sie es dem JavaSE-11 auf der Einstellungsseite "Ausführungsumgebung" zu. Andernfalls führt das Aktualisieren des Maven-Projekts dazu, dass das Standard-JDK verwendet wird. Dies ist wahrscheinlich das Problem, das Sie haben.

3
kapex

Dieses Problem wurde in Eclipse 2018-12 behoben. Ein Upgrade auf diese Version löst Ihr Problem. 

0
Dan Greening