bir jar
sadece bir kaptır. Bir dosya arşivi ā la tar
. A'nın META-INF hiyerarşisinde jar
ilginç bilgiler olsa da , içeriğindeki sınıfların vintage'lerini belirtme zorunluluğu yoktur. Bunun için içindeki dosyaları incelemek gerekir .class
Peter Lawrey'in orijinal soruya yaptığı yorumda belirtildiği gibi , hangi JDK sürümünün belirli bir class
dosya oluşturduğunu bilmeniz gerekmez , ancak class
a jar
.
Evet, bu biraz berbat, ama ilk adım bir veya daha fazla sınıftan çıkarmaktır jar
. Örneğin:
$ jar xf log4j-1.2.15.jar
Linux, Mac OS X veya Cygwin yüklü Windows işletim sistemlerinde , dosya (1) komutu sınıf sürümünü bilir.
$ file ./org/apache/log4j/Appender.class
./org/apache/log4j/Appender.class: compiled Java class data, version 45.3
Veya alternatif olarak, javap
JDK'dan @ jikes.thunderbolt olarak uygun şekilde işaret ederek:
$ javap -v ./org/apache/log4j/Appender.class | grep major
major version: 45
Ve eğer Windows
ikisinden biri olmayan bir ortama düşersenizfile
veyagrep
> javap -v ./org/apache/log4j/Appender.class | findstr major
major version: 45
FWIW, javap
verilen bir class
dosya hakkında sorulan orijinal sorudan çok daha fazlasını anlatacağım konusunda hemfikirim .
Her neyse, farklı bir sınıf versiyonu, örneğin:
$ file ~/bin/classes/P.class
/home/dave/bin/classes/P.class: compiled Java class data, version 50.0
Sınıf sürümü ana numarası aşağıdaki Java JDK sürümlerine karşılık gelir:
- 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