Java. Какая версия также была создана .jar файлом?

Есть ли способ узнать версию JDK, используемую для создания файла .jar?

Ответ 1

Это невозможно, потому что вам даже не нужен JDK для создания JAR файла - это просто файл ZIP с классами и файлом манифеста внутри.

Что вы можете узнать, какая версия используется формат файла. Основной номер версии сопоставляется с версиями majorJDK:

J2SE 6.0 = 50 (0x32 hex)
J2SE 5.0 = 49 (0x31 hex)
JDK 1.4 = 48 (0x30 hex)
JDK 1.3 = 47 (0x2F hex)
JDK 1.2 = 46 (0x2E hex)
JDK 1.1 = 45 (0x2D hex)

Однако java-компилятор имеет возможность использовать формат файла класса предыдущей версии, который часто используется для достижения совместимости с нисходящими. Но если вы найдете версию файла класса с большим числом 50, вы знаете, что классы определенно не были скомпилированы с Java 5 или более ранним JDK.

Ответ 2

Большинство банок построены с использованием предоставленного инструмента "jar", упакованного в jdk.

В SUN JDK предоставленный инструмент "jar" добавит строку "Created-By" во встроенный файл META-INF/MANIFEST.MF.

В этой строке указывается версия JDK, которая создала JAR (в моем случае "Created-By: 1.6.0_17 (Sun Microsystems Inc.)" )

Другие поставщики Java, как правило, делают то же самое.

Ответ 3

Вы можете извлечь файлы классов из файла jar и использовать следующую команду:

javap -verbose SomeClass | grep major

Должен указать номер версии файлов классов.

Ответ 4

В Jars MANIFEST.MF может быть свойство Build-Jdk, которое должно быть тем, что вы ищете.