2013-03-22 13 views
33

Mam aplikacji Maven Eclipse, który próbuję uruchomić za pośrednictwem wiersza polecenia, używając następującego polecenia:nieobsługiwany MAJOR.MINOR wersja 51.0, ale wszystko jest ustawione na JDK 1.6

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

Niestety, zgłasza błąd:

UnsupportedClassVersionError : unsupported major.minor version 51.0 

zrobiłem kilka kopanie i okazało się, że ma to coś wspólnego z aplikacja jest skompilowany w JDK z nowszej wersji, niż JRE biegnie dalej. Podobno 51 oznacza, że ​​został zbudowany za 1,7, ale nie mam JDK 7 na moim komputerze ...

więc upewnić się, że wszystko jest ustawione do wersji 1.6:

system.properties plik w korzeń zawiera

java.runtime.version=1.6 

dodana właściwość maven

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

podano wtyczki kompilatora maven w moim 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> 

Sprawdziłem wersję mojego java za pomocą polecenia java -version który zwrócony

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) 

i aktualizację mojego projektu po ustawieniu Maven-compiler-plugin powodowało Eclipse automatycznego ustawiania poziomu kompilatora do 1.6, aspekt projektu na poziomie 1.6 i dodanie do mojego projektu biblioteki systemowej JavaSE-1.6 jre.

Tak więc nie mam pojęcia, skąd pochodzi JDK 1.7. Nigdy nie instalowałem JDK 1.7 na tym komputerze na początek ...

Również oryginalnie wtyczka maven-compiler nie była obecna, więc powstała z 1.5. Ale zrobiłem mvn clean install, następnie mvn package, a następnie ponownie wypróbowałem polecenie po tym, jak wszystkie ustawienia zostały dostosowane i nadal generuje ten sam błąd.

+0

Na pewno czegoś brakuje. Ponownie sprawdź swoją wersję Java. Sprawdź w wierszu polecenia: 'java -version' i' javac -version' –

+5

Może zależność wymaga języka Java 1.7 – Adrian

+0

java -version i javac -version zarówno zwracają 1.6.0_38, ale nie kompiluję w wierszu polecenia. Używam go tylko do uruchamiania aplikacji. Kompiluję używając Mavena, a tam używam maven plugn. –

Odpowiedz

44

Prawdopodobnie masz zależność wymagającą Java 1.7

14

Pewnie stosując zależność, która wymaga Java SE 7.

Jeśli jest to przypadek albo uaktualnić do Java SE 7 (zalecane jeśli używasz JRE Oracle bez umowy wsparcia, jak Java SE 6 osiągnęło koniec okresu eksploatacji w lutym) lub zastąp tę zależność.

+7

Tak, to był Jetty 9. Nie mogę uaktualnić do JDK 7, ale zmieniono klasyfikację na Jetty 8, która również wykonuje tę pracę. –

+0

Jak obniżyłeś wersję Jetty? –

+0

@ m.dorian za pomocą wcześniejszych wersji pomostu –

Powiązane problemy