Existe alguma forma de descobrir a versão da JDK em que um arquivo foi compilado?
Preciso descobrir…
Obrigado…[color=darkblue][/color] :?:
Existe alguma forma de descobrir a versão da JDK em que um arquivo foi compilado?
Preciso descobrir…
Obrigado…[color=darkblue][/color] :?:
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..
muito obrigado…