2017-07-13 1 views
0

Bei der Installation von Eclipse haben wir keine Probleme, da die Compiler-Version auf 1.8 gesetzt ist.Maven Java-Compiler - Kompilierungsfehler bei Verwendung der falschen Kompatibilitätsversion

Beim Ausführen von mvn Installation im Terminal erhalten wir den folgenden Fehler.

ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project servicehelper: Compilation failure 
    [ERROR] try-with-resources is not supported in -source 1.5 
    [ERROR] (use -source 7 or higher to enable try-with-resources) 
    [ERROR] 

Bei der Verwendung von mvn installieren -X wir -target 1.5

aber hier sind meine Java und javac Versionen

mvn -version 
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T14:39:06-05:00) 
Maven home: /usr/local/Cellar/maven/3.5.0/libexec 
Java version: 1.8.0_131, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.12.5", arch: "x86_64", family: "mac" 

java -version 
java version "1.8.0_131" 
Java(TM) SE Runtime Environment (build 1.8.0_131-b11) 
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) 

javac -version 
javac 1.8.0_131 

Ich scheint, wie aus jeder Version i laufen, dass wir sehen sollten haben 1,8 Compliance aber Maven Ziel weiterhin versuchen und installieren mit 1,5 Compliance.

+2

Maven setzt die Quell-/Zielkonformität auf 1,5 (frage nicht, ich weiß nicht warum), du musst das POM aktualisieren, um dein Ziel zu unterstützen - Siehe [Einstellung -source und -target des Java Compilers ] (https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html) – MadProgrammer

Antwort

0

können Sie versuchen, den Tag java.version auf Ihrem pom.xml Hinzufügen

<properties> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
</properties> 
+0

Diese Eigenschaft wird von keinem Plugin übernommen, das ich kenne? – khmarbaise

+0

@khmarbaise du hast Recht, Bearbeitung. Vielen Dank! –

2

Dieses Plug-in Ihrer pom.xml-Datei.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerVersion>1.8</compilerVersion> 
    </configuration> 
    </plugin> 
+0

Funktioniert nur, wenn Gabel eingestellt ist. https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerVersion – khmarbaise

1

Der Weg zu gehen, zuerst die Version des verwendeten Plugin zu definieren, was bedeutet:

<project> 
    <build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.1</version> 
      <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
      </configuration> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
</project> 

Sie sollten immer Plugin Versionen stecken, die alle verwendeten Plugin in Ihrem Build bedeutet.

<project> 
    <properties> 
    <maven.compiler.source>1.8</maven.compiler.source> 
    <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 
    <build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.1</version> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
</project> 

Oder Sie können die pluginManagement weglassen, wenn Sie bereits über die Plugin-Version über eine Corporate pom Eltern und nur die oben genannten Eigenschaften geben gemerkt haben:

Die andere Möglichkeit, die java version (source/target) definieren kann über erfolgen.

Wenn Sie Maven mit einem anderen JDK ausgeführt haben, als Sie zu kompilieren/testen Sie den Code benötigen müssen Sie über toolchains

gehen, oder Sie können den Compiler definieren über fork option zu verwenden, die zu harten Code bedeutet, dass die Lage der Ihr JDK in Ihrer Pom-Datei, was keine gute Idee ist.

Verwandte Themen