A jar
は単なるコンテナーです。これはファイルアーカイブāla tar
です。にはMETA-INF階層jar
内に興味深い情報が含まれている場合がありますが、そのコンテンツ内のクラスのヴィンテージを指定する義務はありません。そのためには、その中のファイルを調べる必要があります。class
以下のようにピーターLawreyは、元の質問にコメントで述べたように、あなたは、必ずしも特定の内蔵されているJDKのリリースを知ることができないclass
ファイルを、しかし、あなたはのバイトコードクラスバージョンを見つけることができますclass
に含まれるファイルをjar
。
はい、これはひどいですが、最初のステップはから1つ以上のクラスを抽出することjar
です。例えば:
$ jar xf log4j-1.2.15.jar
CygwinがインストールされているLinux、Mac OS X、またはWindows では、file(1)コマンドはクラスのバージョンを認識しています。
$ file ./org/apache/log4j/Appender.class
./org/apache/log4j/Appender.class: compiled Java class data, version 45.3
あるいは、javap
@ jikes.thunderboltが適切に指摘するようにJDKから使用すること:
$ javap -v ./org/apache/log4j/Appender.class | grep major
major version: 45
そして、あなたはに追いやられている場合Windows
せずに環境のいずれかfile
またはgrep
> javap -v ./org/apache/log4j/Appender.class | findstr major
major version: 45
FWIW、私はそれjavap
が与えられたclass
ファイルについて、元の質問が尋ねたよりもずっと多くのことを伝えることに同意します。
とにかく、別のクラスバージョン、たとえば:
$ file ~/bin/classes/P.class
/home/dave/bin/classes/P.class: compiled Java class data, version 50.0
クラスバージョンのメジャー番号は、次の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