Почему версия JDK в MANIFEST.MF и файл класса отличаются - PullRequest
1 голос
/ 03 апреля 2019

Я создал свой проект (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 и vim MANIFEST.MF

Build-Jdk:1.8.0_131

тогда я бегу

javap -verbose MyClass.class | grep "major"
major version: 51

версия файла JDK класса 1.7

Мой проект должен работать с JDK1.7, есть ли проблемы с этим?

1 Ответ

2 голосов
/ 03 апреля 2019

Чтобы добавить комментарий Евгения:

Build-Jdk сообщает вам точную версию JDK, которую вы использовали для компиляции (в вашем случае это 1.8.0_131).Этот JDK может создавать код с различными уровнями совместимости.Эти уровни настраиваются в maven-compiler-plugin.Таким образом, вы создаете Java 1.7-совместимый код с Java 1.8, что, вероятно, именно то, что вам нужно.

Вы можете спросить, для чего нужна версия Build-Jdk: она помогает вам отследить проблемы, которые могут возникнутьошибки в JDK или другие несовместимости.

...