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.
Na pewno czegoś brakuje. Ponownie sprawdź swoją wersję Java. Sprawdź w wierszu polecenia: 'java -version' i' javac -version' –
Może zależność wymaga języka Java 1.7 – Adrian
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. –