2013-05-23 7 views
205

Ho scritto un codice Maven su netbeans che ha approssimativamente più di 2000 righe. Quando compilo su NetBeans, tutto va bene, ma se voglio eseguirlo su riga di comando, mi metterò questi errori:Come si specifica la versione del compilatore Java in un file 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 

ho provato ad usare Java 1.3.1, compiler errors, ma ho avuto più errori. Ho trovato da altri post che dovrei modificare pom.xml, ma non so come. Ecco il mio 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> 

Sarebbe bello se mi potete aiutare.

+2

momento di aggiornare la versione di Java. –

+3

I generici sono supportati da Java 5. Impossibile farli funzionare prima di quella versione di Java. –

+0

Il valore predefinito per OpenJDK javac è 1.3, dove per Oracle JDK è 1.5 –

risposta

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> 

Vedere la pagina di configurazione per il plugin Maven compilatore:

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

Oh, e: non utilizzare Java 1.3.x, le versioni attuali sono Java 1.7.x o 1.8.x

+4

Si potrebbe anche voler aggiungere un controllo sulla versione JDK che si sta utilizzando per eseguire Maven con il plugin Maven Enforcer: http://maven.apache.org/enforcer/maven-enforcer-plugin/ Lo trovo molto comodo come devono supportare diversi progetti che sono su diverse versioni di JDK. Evita di compilare con Java 8 su un progetto Java 7, ad esempio. –

+2

Manca la versione del plugin. Non genererebbe un errore ma è fortemente raccomandato, per impostare la versione lì. La versione attuale è 3.3 –

+1

@LukasWerner hai ragione, ovviamente. ma se aggiungo una versione devo modificare la domanda ogni pochi mesi. è andato a un compromesso :-) –

275

maven-compiler-plug-in è già presente nella dipendenza gerarchia plug-in in pom.xml. Effettua il check in Eclipse Effective POM.

Per brevi è possibile utilizzare le proprietà in questo modo:

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

sto usando Maven 3.2.5

+0

Quale è "migliore"? Questo è meno dettagliato rispetto alla risposta selezionata, ma sembra un po 'nascosto. Anche il Maven [documentazione del sito ] (https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html) mostra l'uso del plugin – mkobit

+2

@mkobit Immagino che questa sia una scelta personale. Se devo configurare qualcos'altro oltre al compilatore e alla versione sorgente, preferisco farlo nella sezione plugin – leonardoborges

+1

Buon punto con "configura qualcos'altro" Se voglio usare qualcosa come [* google/error-prono *] (https://github.com/google/error-prone) , Dovrei usare il modo in cui i plugin sono in ordine. – mkobit

8

Ho affrontato lo stesso problema in Eclipse neon progetto Java semplice Maven

Ma aggiungo sotto i dettagli all'interno del file 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> 

Dopo aver fatto clic destro sul progetto> Maven> progetto di aggiornamento (update controllata vigore)

Its me risolvere per visualizzare errore sul progetto

Spero che sia utile volontà

Thansk

+0

Questo ha funzionato per me quando stavo cercando di creare l'app SqlServerSample per il driver Microsoft JDBC per SQL Server. –

Problemi correlati