#java #maven #jenkins #java-8 #java-7
#java #maven #дженкинс #java-8 #java-7
Вопрос:
Я создал свой проект (JDK версии 1.7) с помощью Jenkins (версия 2.164.1 с JDK 1.8)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
затем я получил файл jar,
когда я распаковываю файл jar и просматриваю MANIFEST.MF
Build-Jdk:1.8.0_131
затем я запускаю
javap -verbose MyClass.class | grep "major"
major version: 51
версия JDK файла класса 1.7
Мой проект должен запускаться с JDK1.7, есть ли проблема с этим?
Комментарии:
1. в нем говорится, что использовался jdk для сборки,
1.8
но51
сообщает вам, что «это»1.7
— у вас все в порядке. что вас здесь беспокоит?2. Я обеспокоен тем, что мой проект, наконец, скомпилирован с JDK1.8, но среда выполнения — JDK1.7, будут проблемы.
3. в общем случае — нет, у вас все должно быть в порядке, в конце концов, вы указываете, что
source/target
должно быть1.7
.4. Вы также должны убедиться, что не используете какой-либо API, представленный в JDK8. Вы должны получить rt.jar из JDK7 и задайте путь к bootclasspath, чтобы указать на него. (Или, на всякий случай, просто скомпилируйте с помощью JDK7)
Ответ №1:
Чтобы добавить комментарий Евгения:
Build-Jdk
указывает точную версию JDK, которую вы использовали для компиляции (в вашем случае это 1.8.0_131). Этот JDK может создавать код с различными уровнями совместимости. Эти уровни настраиваются в maven-compiler-plugin. Итак, вы создаете совместимый с Java 1.7 код с Java 1.8, который, вероятно, именно то, что вы хотите.
Вы можете спросить, для чего предназначена Build-Jdk
версия: это поможет вам отследить проблемы, которые могут возникнуть из-за ошибок в JDK или других несовместимостей.
Комментарии:
1. Я понимаю, но у меня есть беспокойство. Я уже компилировал с JDK1.7 раньше. Теперь, если я использую JDK1.8 для компиляции проекта 1.7, возникнет ли проблема во время выполнения в JDK1.7? Большое вам спасибо 🙂
2. Скорее всего, нет. Никто не может сказать, что ошибок нет, но это маловероятно.