2013-05-23 14 views
205

Napisałem maven kod na netbeans, który ma około 2000 linii. Kiedy skompilować go na netbeans, wszystko jest w porządku, ale jeśli chcę, aby go uruchomić w wierszu polecenia, będę się tych błędów:Jak określić wersję kompilatora Java w pliku pom.xml?

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, compiler errors, ale mam więcej błędów. Z innych postów dowiedziałem się, ż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.

+2

Czas uaktualnić wersję Javy. –

+3

Generics są obsługiwane przez Java 5. Niemożliwe, aby działały przed tą wersją Java. –

+0

Domyślnym ustawieniem javac OpenJDK jest 1.3, gdzie dla Oracle JDK jest to 1.5 –

Odpowiedz

263
<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> 

Zobacz stronę config dla wtyczki Maven kompilatora:

http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

Aha, i: nie stosować 1.3.x Java, aktualne wersje 1.7.x lub 1.8.x Java

+4

Możesz również chcieć dodać wersję JDK, której używasz do uruchamiania Mavena z wtyczką Maven Enforcer: http://maven.apache.org/enforcer/maven-enforcer-plugin/ Uważam to za bardzo wygodne, ponieważ muszą obsługiwać różne projekty, które są w różnych wersjach JDK. Zapobiega to kompilacji z Javą 8 na przykład w projekcie Java 7. –

+2

Brakuje wersji wtyczki. Nie spowodowałby błędu, ale zdecydowanie zaleca się ustawienie tam wersji. Obecna wersja to 3.3 –

+1

@LukasWerner masz rację oczywiście. ale jeśli dodam wersję, muszę edytować pytanie co kilka miesięcy. poszedł na kompromis :-) –

275

maven-compiler-plugin jest już obecny w zależności od hierarchii wtyczek w pom.xml. Sprawdź w Eclipse Effective POM.

Na krótko można użyć właściwości tak:

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

Używam Maven 3.2.5

+0

Który z nich jest "najlepszy"? Ten jest mniej szczegółowy niż wybrana odpowiedź, ale wydaje się być ukryty ... Nawet dokumentacja strony Maven [ ] (https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html) pokazuje użycie wtyczki – mkobit

+2

@mkobit Myślę, że to osobisty wybór. Jeśli potrzebuję skonfigurować coś innego poza kompilatorem i wersją źródłową, wolę to zrobić w dziale wtyczek: – leonardoborges

+1

Dobry punkt z "skonfigurować coś innego" .Jeśli chcę użyć czegoś takiego jak [* google/error-paid *] (https://github.com/google/error-prone) , Musiałbym użyć sposobu na wtyczki. – mkobit

8

wychodził sam problem w Eclipse neon projektu java prosty maven

Ale dodam poniżej szczegóły w pliku 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> 

Po kliknięciu prawym przyciskiem myszy na projekcie> Maven> projekt aktualizacji (sprawdzone aktualizacji siłę)

swoje postanowienie mnie, aby wyświetlić błąd na projekcie

nadzieję, że to będzie pomocne

Thansk

+0

To działało dla mnie, gdy próbowałem zbudować aplikację SqlServerSample dla sterownika JDBC Microsoft dla SQL Server. –

Powiązane problemy