У меня есть приложение Maven Eclipse, которое я пытаюсь запустить через командную строку, используя следующую команду:
java -cp target/classes;"target/dependency/*" com.example.Main
К сожалению, это вызывает ошибку:
UnsupportedClassVersionError : unsupported major.minor version 51.0
Я немного поработал и выяснил, что он имеет какое-то отношение к приложению, скомпилированному в JDK более новой версии, чем JRE, над которым он работает. По-видимому, 51 означает, что он был построен для 1.7, но у меня нет JDK 7 на моем компьютере...
Итак, я убедился, что все настроено на версию 1.6:
Файл system.properties в корневом каталоге содержит
java.runtime.version=1.6
Добавлено свойство maven
<java.version>1.6</java.version>
Указанный плагин компилятора maven в моем 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>
Я проверил версию моего java с помощью команды java -version, которая вернула
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)
И обновление моего проекта после установки maven-compiler-plugin привело к тому, что Eclipse автоматически установил уровень компилятора на 1,6, уровень гранта проекта до 1,6 и добавив в мою проект системную библиотеку JavaSE-1.6 jre.
Итак, я совершенно не знаю, откуда этот JDK 1.7. Я никогда не устанавливал JDK 1.7 на этом компьютере, чтобы начать с...
Кроме того, изначально, maven-compiler-plugin не присутствовал, поэтому он был построен с 1.5, я думаю. Но я сделал mvn clean install
, затем mvn package
, а затем снова попробовал команду после того, как все настройки были скорректированы, и она по-прежнему вызывает ту же ошибку.