А jar
- это просто контейнер. Это файл-архив a la tar
. Хотя у jar
нее может быть интересная информация, содержащаяся в ее иерархии META-INF , она не обязана указывать урожайность классов в ее содержимом. Для этого нужно изучить class
файлы в нем.
Как упоминал Питер Лори в комментарии к первому вопросу, вы не можете знать, какой выпуск JDK создал данный class
файл, но вы можете узнать версию класса байтового кода class
файла, содержащегося в a jar
.
Да, этот вид отстой, но первым шагом является извлечение одного или нескольких классов из jar
. Например:
$ javap -v ./org/apache/log4j/Appender.class | grep major
major version: 45
В Linux, Mac OS X или Windows с установленной Cygwin команда file (1) знает версию класса.
file
Или, альтернативно, использование grep
JDK как @ jikes.thunderbolt точно указывает:
> javap -v ./org/apache/log4j/Appender.class | findstr major
major version: 45
И если вы отнесены к Windows
среде либо без file
илиjavap
class
FWIW, я соглашусь, что $ file ~/bin/classes/P.class /home/dave/bin/classes/P.class: compiled Java class data, version 50.0
расскажут намного больше о заданном class
файле, чем заданный оригинальный вопрос.
В любом случае, другая версия класса, например:
javap -v <class> | findstr major
Основная версия версии класса соответствует следующим версиям Java JDK:
- 45.3 = Java 1.1
- 46 = Java 1.2
- 47 = Java 1.3
- 48 = Java 1.4
- 49 = Java 5
- 50 = Java 6
- 51 = Java 7
- 52 = Java 8
- 53 = Java 9