A solução natural seria usar o executável javap, mas ele depende do classpath e aceita o nome de uma classe, não o nome de seu arquivo.
Felizmente, o Linux não nos deixa na mão em questão de manipulação de arquivos. O executável xxd permite extrair bytes quaisquer.
find /tmp -name *.class | xargs -I{} xxd -p -l4 -s4 {} | sort | uniq
Usei o find para encontrar todos os .class no diretório onde estavam. Depois o xargs usei para invocar o xxd com os seguintes parâmetros:- -p imprime o resultado de forma simplificada;
- -l4 imprime quatro bytes;
- -s4 inicia no byte 4 (quinto byte).
Finalmente, o sort | uniq elimina as repetições.
O resultado final foi:
00000031
00000032
E isso significa que há classes compiladas com java versão 5.0 e versão 6.0.
Nenhum comentário:
Postar um comentário