Ferramenta versão de um arquivo compilado

2 respostas
F

Existe alguma forma de descobrir a versão da JDK em que um arquivo foi compilado?

Preciso descobrir…

Obrigado…[color=darkblue][/color] :?:

2 Respostas

T

O oitavo byte de um arquivo .class indica qual é a versão "target".
Por exemplo, para um .class compilado com JDK 5.0 (sem modificar as opções padrão, que são equivalentes a -target 5.0), o byte é 49 em decimal ou 31 em hexadecimal.

1.1 -> 45 (0x2D)
1.2 -> 46 (0x2E)
1.3 -> 47 (0x2F)
1.4 -> 48 (0x30)
5.0 -> 49 (0x31)
6.0 -> 50 (0x32)
7.0 -> 51 (0x33)

Código compilado com Java 5.0:

0000    CA FE BA BE 00 00 00 31  00 3D 0A 00 11 00 1C 07   .■.....1.=......
0010    00 1D 0A 00 02 00 1C 0A  00 02 00 1E 0A 00 02 00   ................
0020    1F 09 00 20 00 21 07 00  22 0A 00 07 00 1C 0A 00   ... .!..".......
...

Compilado com Java 6.0:

0000    CA FE BA BE 00 00 00 32  00 3D 0A 00 11 00 1C 07   .■.....2.=......
0010    00 1D 0A 00 02 00 1C 0A  00 02 00 1E 0A 00 02 00   ................
0020    1F 09 00 20 00 21 07 00  22 0A 00 07 00 1C 0A 00   ... .!..".......

Compilado com -target 1.3:

0000    CA FE BA BE 00 00 00 2F  00 3D 0A 00 11 00 1C 07   .■...../.=......
0010    00 1D 0A 00 02 00 1C 0A  00 02 00 1E 0A 00 02 00   ................
0020    1F 09 00 20 00 21 07 00  22 0A 00 07 00 1C 0A 00   ... .!..".......

Compilado com -target 1.2:

0000    CA FE BA BE 00 00 00 2E  00 3D 0A 00 11 00 1C 07   .■.......=......
0010    00 1D 0A 00 02 00 1C 0A  00 02 00 1E 0A 00 02 00   ................
0020    1F 09 00 20 00 21 07 00  22 0A 00 07 00 1C 0A 00   ... .!..".......

Compilado com Microsoft Visual J++ (Java 1.1):

0000    CA FE BA BE 00 03 00 2D  00 3D 01 00 04 43 6F 64   .þ.....-.=...Cod
0010    65 01 00 0A 53 6F 75 72  63 65 46 69 6C 65 01 00   e...SourceFile..
0020    0D 43 6F 6E 73 74 61 6E  74 56 61 6C 75 65 01 00   .ConstantValue..
F

muito obrigado…

Criado 14 de dezembro de 2007
Ultima resposta 15 de jan. de 2008
Respostas 2
Participantes 2