J'ai écrit un code Maven sur Netbeans qui compte environ plus de 2000 lignes. Lorsque je le compile sur netbeans, tout va bien, mais si je veux l'exécuter en ligne de commande, j'obtiendrai les erreurs suivantes:
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
J'ai essayé d'utiliser Java 1.3.1, erreurs de compilation , mais j'ai eu plus d'erreurs. J'ai trouvé dans d'autres publications que je devrais modifier pom.xml, mais je ne sais pas comment. Voici mon 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>
Ce serait génial si vous pouviez m'aider.
<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>
Voir la page de configuration pour le plugin maven compiler:
http://maven.Apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
Oh, et: n'utilisez pas Java 1.3.x, les versions actuelles sont Java 1.7.x ou 1.8.x
maven-compiler-plugin il est déjà présent dans la dépendance de la hiérarchie des plugins dans pom.xml. Enregistrement en vigueur POM.
Pour résumer, vous pouvez utiliser des propriétés comme celle-ci:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
J'utilise Maven 3.2.5
En général, vous ne voulez pas attribuer uniquement la valeur à la version source
(javac -source 1.8
par exemple), mais vous souhaitez attribuer une valeur à la fois à la version source
et à la version target
(javac -source 1.8 -target 1.8
par exemple).
Notez qu'à partir de Java 9, vous disposez d'un moyen de transmettre à la fois les informations et de manière plus robuste pour la compatibilité de compilation croisée (javac -release 9
).
Maven qui encapsule la commande javac
offre plusieurs façons de transmettre toutes ces options standard de la JVM.
L'utilisation de maven-compiler-plugin
ou maven.compiler.source
/maven.compiler.target
, propriétés permettant de spécifier les propriétés source
et target
sont équivalentes.
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
et
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
sont équivalentes selon le documentation Maven du plugin du compilateur puisque les éléments <source>
et <target>
de la configuration du compilateur utilisent les propriétés maven.compiler.source
et maven.compiler.target
s'ils sont définis.
L'argument
-source
pour le compilateur Java.
La valeur par défaut est:1.6
.
La propriété de l'utilisateur est:maven.compiler.source
.L'argument
-target
pour le compilateur Java.
La valeur par défaut est:1.6
.
La propriété de l'utilisateur est:maven.compiler.target
.
À propos des valeurs par défaut pour source
et target
, notez que depuis le 3.8.0
du compilateur maven, les valeurs par défaut ont été modifiées de 1.5
à 1.6
.
Vous pouvez utiliser l'argument release
:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>9</release>
</configuration>
</plugin>
Vous pouvez également déclarer uniquement la propriété utilisateur maven.compiler.release
:
<properties>
<maven.compiler.release>9</maven.compiler.release>
</properties>
Mais pour le moment, la dernière ne suffira pas, car la version par défaut de maven-compiler-plugin
que vous utilisez ne repose pas sur une version suffisamment récente.
L'argument Maven release
véhicule release
: a nouvelle option standard de la JVM que nous pourrions passer de Java 9:
Compile contre l'API publique, prise en charge et documentée pour une version spécifique de VM.
Cette méthode offre un moyen standard de spécifier la même version pour les options JVM source
, target
et bootstrap
.
Notez que spécifier bootstrap
est une bonne pratique pour les compilations croisées et que cela ne fera pas de mal si vous ne faites pas de compilations croisées non plus.
Pour Java 8 et inférieur:
Ni maven.compiler.source
/maven.compiler.target
propriétés ni à l'aide de maven-compiler-plugin
ne sont meilleures. Cela ne change rien aux faits puisque finalement les deux manières reposent sur les mêmes propriétés et le même mécanisme: le plugin maven core compiler.
Eh bien, si vous n'avez pas besoin de spécifier d'autres propriétés ou comportements que Java versions dans le plug-in du compilateur, utiliser cette méthode est plus logique car plus concis:
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
De Java 9:
L'argument release
(troisième point) est un moyen d'envisager sérieusement si vous voulez utiliser la même version pour les variables source
et target
.
J'ai rencontré le même problème dans le projet Eclipse neon simple maven Java
Mais j'ajoute ci-dessous des détails dans le fichier pom.xml
<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>
Après un clic droit sur projet> maven> projet de mise à jour (mise à jour forcée cochée)
Sa résoudre moi pour afficher une erreur sur le projet
J'espère que ça vous aidera
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>