Napisałem kod maven na netbeans, który ma około 2000 linii. Kiedy kompiluję go na netbeans, wszystko jest w porządku, ale jeśli chcę uruchomić go z linii poleceń, dostanę te błędy:
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
Próbowałem użyć Java 1.3.1, błędy kompilatora , ale dostałem więcej błędów. Znalazłem z innych postów, że powinienem zmodyfikować pom.xml, ale nie wiem jak. Oto mój 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>
Byłoby wspaniale, gdybyś mógł mi pomóc.
Odpowiedzi:
Zobacz stronę konfiguracji wtyczki kompilatora maven:
http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
Aha: nie używaj Java 1.3.x, aktualne wersje to Java 1.7.x lub 1.8.x
źródło
maven-compiler-plugin jest już obecny w zależności hierarchii wtyczek w pom.xml. Sprawdź skuteczną POM.
W skrócie możesz użyć takich właściwości:
Używam maven 3.2.5
źródło
Zasadniczo nie chcesz wyceniać tylko
source
wersji (javac -source 1.8
na przykład), ale chcesz wycenić zarówno wersję, jaksource
itarget
wersję (javac -source 1.8 -target 1.8
na przykład).Zauważ, że w Javie 9 możesz przekazywać zarówno informacje, jak i bardziej niezawodny sposób na kompatybilność krzyżową (
javac -release 9
).Maven, który otacza
javac
polecenie, oferuje wiele sposobów przekazywania wszystkich standardowych opcji JVM.Jak określić wersję JDK?
Użycie
maven-compiler-plugin
lubmaven.compiler.source
/maven.compiler.target
właściwości do określeniasource
itarget
są równoważne.i
są równoważne zgodnie z dokumentacją Maven wtyczki kompilatora Ponieważ
<source>
oraz<target>
elementy do wykorzystania konfiguracji kompilator właściwościmaven.compiler.source
imaven.compiler.target
jeśli są zdefiniowane.Informacje o wartościach domyślnych dla
source
itarget
zwróć uwagę, że od3.8.0
kompilatora maven wartości domyślne zmieniły się z1.5
na1.6
.Z maven-compiler-plugin 3.6 masz nowy sposób na określenie wersji Java
Można użyć do
release
argumentu :Możesz także zadeklarować tylko właściwość użytkownika
maven.compiler.release
:Ale w tej chwili ta ostatnia nie wystarczy, ponieważ
maven-compiler-plugin
używana wersja domyślna nie opiera się na wystarczająco nowej wersji.release
Argument Maven przekazujerelease
: nową standardową opcję JVM , którą moglibyśmy przekazać z Java 9:Ten sposób zapewnia standardowy sposób określenia tej samej wersji dla opcji
source
,target
ibootstrap
JVM.Zauważ, że określenie
bootstrap
jest dobrą praktyką dla kompilacji krzyżowych i nie zaszkodzi, jeśli nie wykonasz kompilacji krzyżowych.Jaki jest najlepszy sposób na określenie wersji JDK?
Dla Java 8 i niższych:
Ani
maven.compiler.source
/maven.compiler.target
właściwości ani korzystanie z nich niemaven-compiler-plugin
jest lepsze. Nic nie zmienia faktów, ponieważ w końcu dwa sposoby polegają na tych samych właściwościach i tym samym mechanizmie: wtyczka kompilatora core maven.Cóż, jeśli nie musisz określać innych właściwości lub zachowania niż wersje Java we wtyczce kompilatora, użycie tego sposobu ma większy sens, ponieważ jest bardziej zwięzłe:
Z Java 9:
release
Argument (trzeci punkt) jest sposobem, aby poważnie rozważyć, jeśli chcesz używać tej samej wersji dlasource
atarget
.źródło
Ten sam problem spotkałem w projekcie Java Simple Eclipse Neon Maven
Ale dodaję poniżej szczegóły w pliku pom.xml
Po kliknięciu prawym przyciskiem myszy projektu> maven> zaktualizuj projekt (zaznaczone wymuś aktualizację)
Rozwiązuje mnie wyświetlanie błędu w projekcie
Mam nadzieję, że to pomoże
Thansk
źródło
źródło