Есть ли способ узнать версию JDK, используемую для создания файла .jar?
Java. Какая версия также была создана .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, которое должно быть тем, что вы ищете.