2013-03-22 16 views
33

Ho un'applicazione Maven Eclipse che sto cercando di correre attraverso il prompt dei comandi utilizzando il seguente comando:non supportata versione major.minor 51,0 ma tutto è impostato per JDK 1.6

java -cp target/classes;"target/dependency/*" com.example.Main 

Purtroppo, viene generata errore:

UnsupportedClassVersionError : unsupported major.minor version 51.0 

ho fatto qualche ricerca e ha scoperto che ha qualcosa a che fare con l'applicazione viene compilata su un JDK di una versione più recente, che il JRE può girare. A quanto pare il 51 significa che è stato costruito per 1.7, ma non hanno un JDK 7 sul mio computer ...

Così ho fatto in modo che tutto è impostato alla versione 1.6: il file in

system.properties la radice contiene

java.runtime.version=1.6 

Aggiunto alla proprietà Maven

<java.version>1.6</java.version> 

specificato il compilatore plugin di Maven nel mio pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
</plugin> 

ho controllato la versione del mio Java utilizzando il comando java -version che ha restituito

Java version "1.6.0_38" 
Java(TM) SE Runtime Environment (build 1.6.0_38-b05) 
Java HotSpot(TM) 64-bit Server VM (build 20.13-b02, mixed mode) 

e un aggiornamento del mio progetto dopo aver impostato l'esperto-compiler-plugin ha portato in Eclipse impostare automaticamente il livello di compilatore a 1.6, il livello di sfaccettatura del progetto a 1.6 e l'aggiunta della libreria di sistema jre JavaSE-1.6 al mio progetto.

Quindi non ho assolutamente idea da dove provenga questo JDK 1.7. Non ho mai installato JDK 1.7 su questo computer per cominciare ...

Inoltre, in origine, il plugin per il compilatore di maven non era presente, quindi è stato compilato con 1.5, suppongo. Ma ho fatto un mvn clean install, poi un mvn package, e poi ho provato di nuovo il comando dopo aver regolato tutte le impostazioni e ancora genera lo stesso errore.

+0

Manca assolutamente qualcosa. Ricontrolla la tua versione java. Controllare sul prompt dei comandi: 'java -version' e' javac -version' –

+5

Forse una dipendenza ha bisogno di Java 1.7 – Adrian

+0

java -version e javac -version restituiscono entrambi 1.6.0_38, ma in realtà non lo compilo utilizzando il prompt dei comandi. Lo uso solo per eseguire la mia app. Sto compilando usando Maven, e lì uso il plug-in Maven. –

risposta

44

Probabilmente si dispone di una dipendenza che richiede Java 1.7

14

Probabilmente stai usando una dipendenza che richiede Java SE 7.

Se questo è il caso o l'aggiornamento a Java SE 7 (consigliato se si sta utilizzando il JRE da Oracle, senza contratto di assistenza, come Java SE 6 ha raggiunto la fine della vita a febbraio) o sostituire questa dipendenza.

+7

Sì, era Jetty 9. Non riesco ad eseguire l'aggiornamento a JDK 7, ma ho eseguito il downgrade a Jetty 8, che svolge anche il lavoro. –

+0

Come hai effettuato il downgrade della versione di Jetty? –

+0

@ m.dorian utilizzando le versioni precedenti del jetty –

Problemi correlati