Ich habe einen Maven-Code für Netbeans geschrieben, der ungefähr mehr als 2000 Zeilen enthält. Wenn ich es auf NetBeans kompiliere, ist alles in Ordnung, aber wenn ich es auf der Befehlszeile ausführen möchte, erhalte ich die folgenden Fehler:
generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
HashSet<Double> resid_List = new HashSet<Double>(Arrays.asList(resid_val));
generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
List<Integer> ind_ovlpList = new ArrayList<Integer>(Arrays.asList(ind_ovlp));
generics are not supported in -source 1.3
(use -source 5 or higher to enable generics)
public class ColumnComparator implements Comparator<double[]> {
annotations are not supported in -source 1.3
(use -source 5 or higher to enable annotations)
@Override
Ich habe versucht, Java 1.3.1, Compiler-Fehler zu verwenden, aber es sind mehr Fehler aufgetreten. Ich habe in anderen Beiträgen festgestellt, dass ich pom.xml ändern sollte, aber ich weiß nicht wie. Hier ist meine pom.xml
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>mavenmain</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mavenmain</name>
<url>http://maven.Apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>gov.nist.math</groupId>
<artifactId>jama</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
</project>
Es wäre toll, wenn Sie mir helfen können.
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>(whatever version is current)</version>
<configuration>
<!-- or whatever version you use -->
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
Siehe die Konfigurationsseite für das Maven Compiler Plugin:
http://maven.Apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
Oh, und: Verwenden Sie nicht Java 1.3.x, die aktuellen Versionen sind Java 1.7.x oder 1.8.x
Maven-Compiler-Plugin Es ist bereits in der Plugin-Hierarchie-Abhängigkeit in pom.xml vorhanden. Überprüfen Sie den effektiven POM.
Kurz gesagt, Sie können Eigenschaften wie diese verwenden:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Ich benutze Maven 3.2.5
Im Allgemeinen möchten Sie nicht nur die source
-Version (zum Beispiel javac -source 1.8
) bewerten, sondern Sie möchten sowohl die source
- als auch die target
-Version (zum Beispiel javac -source 1.8 -target 1.8
) bewerten.
Beachten Sie, dass Sie ab Java 9 die Möglichkeit haben, sowohl Informationen zu übermitteln als auch die Kompatibilität zwischen Kompilierungen zu verbessern (javac -release 9
).
Maven, der den Befehl javac
umschließt, bietet mehrere Möglichkeiten, um alle diese JVM-Standardoptionen zu übermitteln.
Die Verwendung der Eigenschaften maven-compiler-plugin
oder maven.compiler.source
/maven.compiler.target
zur Angabe von source
und target
ist äquivalent.
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
und
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
sind äquivalent gemäß Maven-Dokumentation des Compiler-Plugins , da die Elemente <source>
und <target>
in der Compilerkonfiguration die Eigenschaften maven.compiler.source
und maven.compiler.target
verwenden, wenn sie definiert sind.
Das Argument
-source
für den Compiler Java.
Standardwert ist:1.6
.
Benutzereigenschaft ist:maven.compiler.source
.Das Argument
-target
für den Compiler Java.
Standardwert ist:1.6
.
Benutzereigenschaft ist:maven.compiler.target
.
Beachten Sie bei den Standardwerten für source
und target
Folgendes: Seit dem 3.8.0
des Maven-Compilers haben sich die Standardwerte von 1.5
in 1.6
geändert. .
Sie können das Argument release
verwenden:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>9</release>
</configuration>
</plugin>
Sie können auch nur die Benutzereigenschaft maven.compiler.release
deklarieren:
<properties>
<maven.compiler.release>9</maven.compiler.release>
</properties>
Zu diesem Zeitpunkt wird die letzte Version jedoch nicht ausreichen, da die von Ihnen verwendete Standardversion von maven-compiler-plugin
nicht auf einer ausreichend aktuellen Version basiert.
Das Argument Maven release
vermittelt release
: a neue JVM-Standardoption das wir von Java 9 übergeben könnten:
Kompiliert gegen die öffentliche, unterstützte und dokumentierte API für eine bestimmte VM Version.
Auf diese Weise können Sie standardmäßig dieselbe Version für die JVM-Optionen source
, target
und bootstrap
angeben.
Beachten Sie, dass die Angabe von bootstrap
eine gute Methode für Cross-Kompilierungen ist und nicht schadet, wenn Sie auch keine Cross-Kompilierungen durchführen.
Für Java 8 und darunter:
Weder maven.compiler.source
/maven.compiler.target
Eigenschaften noch mit dem maven-compiler-plugin
sind besser. Es ändert nichts an den Fakten, da die beiden Methoden letztendlich auf den gleichen Eigenschaften und dem gleichen Mechanismus beruhen: dem Maven Core Compiler Plugin.
Wenn Sie im Compiler-Plugin keine anderen Eigenschaften oder Verhaltensweisen als Java angeben müssen, ist die Verwendung dieser Methode sinnvoller, da dies übersichtlicher ist:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Von Java 9:
Mit dem Argument release
(dritter Punkt) können Sie genau überlegen, ob Sie dieselbe Version für source
und target
verwenden möchten.
Ich hatte das gleiche Problem im Projekt Eclipse Neon Simple Maven Java
Aber ich füge unten Details in die Datei pom.xml ein
<build>
<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>
</build>
Nach einem Rechtsklick auf Projekt> Maven> Projekt aktualisieren (Update erzwingen)
Es löst mich, Fehler im Projekt anzuzeigen
Hoffe es wird hilfreich sein
Thansk
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<fork>true</fork>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>