У меня есть Jenkins-сервер с JDK & JRE 6 и 7 установлены вместе.Maven/Jenkins java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0
Все проекты построены на 1,6, за исключением 1,7-зависимых.
Я настроил файл maven pom для использования компилятора Java из среды JAVA_HOME_7 PATH.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
**<executable>${env.JAVA_HOME_7}/bin/javac</executable>**
<fork>true</fork>
<verbose>false</verbose>
</configuration>
</plugin>
Во время MVN установки я получаю следующее сообщение об ошибке:
java.lang.RuntimeException: There was an error in the forked process
java.lang.UnsupportedClassVersionError: : Unsupported major.minor version 51.0
, который я думаю, означает, что сервер использует JRE 1.6.
Как сохранить JRE 1.6 вместе с 1.7, чтобы сохранить совместимость со старыми 1,6 проектами и новым 1,7?
Большое спасибо, Атанас
Возможно, вы используете некоторые модульные или интеграционные тесты как часть сборки, например, с помощью maven surefire или отказоустойчивых подключаемых модулей? ... и они также используют Java 7? (Coz похоже, что Дженкинс разворачивает процесс запуска чего-то с помощью Java6 JVM). – sbk
Да, вы правы, я запускаю пакет junit с плагином surefire, а код JDK 7 зависит от того, что оператор multi-catch не поддерживается в-источнике 1.6. –
Ответ на сообщение ниже – sbk