Comment spécifier le compilateur Java version dans un pom.xml fichier?
J'ai écrit un maven code sur netbeans qui a environ plus de 2000 lignes. Quand je le compile sur netbeans, tout va bien, mais si je veux l'exécuter en ligne de commande, j'obtiens ces erreurs:
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, des erreurs de compilation ,mais j'ai eu plus d'erreurs. J'ai trouvé d'autres posts que je dois 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>
Il serait grand si vous pouvez m'aider.
- Le temps de mise à niveau de version de java.
- Les génériques sont pris en charge à partir de Java 5. Impossible de leur faire le travail avant que la version Java.
- La valeur par défaut pour OpenJDK javac est 1.3, où pour Oracle JDK il est de 1,5
- Les deux qui sont antérieurs à moi d'être un programmeur!
Vous devez vous connecter pour publier un commentaire.
Voir la page de configuration pour le maven compilateur plugin:
http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
Oh, et: ne pas utiliser Java 1.3.x, les versions actuelles de Java 1.7.x ou 1.8.x
maven-compiler-plugin il est déjà présent dans les plugins de la hiérarchie de dépendance dans pom.xml. Vérifiez dans l'efficacité de la POM.
Pour faire court, vous pouvez utiliser les propriétés de ce type:
Je suis en utilisant maven 3.2.5
J'ai fait face à la même question dans eclipse néon simple maven projet java
Mais j'ajoute ci-dessous les détails à l'intérieur pom.xml fichier
Après un clic droit sur le projet > maven > mise à jour du projet (vérifié forcer la mise à jour)
Sa volonté de m'afficher une erreur sur le projet
Espère que ça sera utile
Merci
En général, vous ne voulez pas uniquement la valeur de la
source
version (javac -source 1.8
par exemple), mais vous voulez une valeur à la fois lasource
et latarget
version (javac -source 1.8 -target 1.8
par exemple).Notez qu'à partir de Java 9, vous avez un moyen de transmettre de l'information et dans une façon plus robuste pour la cross-compilation de compatibilité (
javac -release 9
).Maven qui enveloppe le
javac
de commande fournit de multiples façons de transmettre toutes ces JVM standard options.Comment spécifier la version du JDK?
À l'aide de
maven-compiler-plugin
oumaven.compiler.source
/maven.compiler.target
propriétés pour spécifier lesource
et latarget
sont équivalentes.et
sont l'équivalent selon les Maven de la documentation du compilateur plugin
depuis le
<source>
et la<target>
éléments dans le compilateur de configuration utiliser les propriétésmaven.compiler.source
etmaven.compiler.target
si ils sont définis.Sur les valeurs par défaut pour
source
ettarget
, notez quedepuis le
3.8.0
de l'maven compilateur, les valeurs par défaut ont changé à partir de1.5
à1.6
.De l'maven-compiler-plugin de 3,6 vous avez une nouvelle manière de spécifier la version de Java
Vous pouvez utiliser le
libération
argument :Vous pouvez également déclarer seulement la propriété de l'utilisateur
maven.compiler.release
:Mais à ce moment, le dernier ne sera pas assez que le
maven-compiler-plugin
par défaut de la version que vous utilisez ne repose pas sur un assez récente version.Le Maven
release
argument transmetrelease
: un nouvelle JVM standard option que nous avons pu passer de Java 9 :De cette manière fournit un moyen standard pour spécifier la même version pour le
source
, letarget
et labootstrap
options JVM.Notez que la définition de la
bootstrap
est une bonne pratique pour traverser les compilations et il ne fera pas mal si vous n'avez pas à faire des compilations soit.Qui est le meilleur moyen de spécifier la version du JDK?
Pour Java 8 et ci-dessous :
Ni
maven.compiler.source
/maven.compiler.target
propriétés ou à l'aide de lamaven-compiler-plugin
est mieux.Cela ne change rien dans les faits puisque finalement les deux façons de s'appuyer sur les mêmes propriétés et le même mécanisme : le maven de base compilateur plugin.
Bien, si vous n'avez pas besoin de spécifier d'autres propriétés ou de comportement que les versions de Java dans le compilateur plugin, l'utilisation de cette voie a plus de sens car c'est plus concis:
De Java 9 :
La
release
argument (troisième point) est une voie à envisager sérieusement si vous voulez utiliser la même version pour lesource
et latarget
.