Estou tentando descobrir o que o arquivo de classe de um miniaplicativo Java está fazendo nos bastidores. Abri-lo com o Notepad ou Textpad mostra apenas um monte de gobbledy-gook.
Existe alguma maneira de colocá-lo de volta em um formato legível para que eu possa tentar descobrir o que ele está fazendo?
- Ambiente == Windows com VS 2008 instalado.
Respostas:
jd-gui é o melhor descompilador no momento. ele pode lidar com recursos mais novos em Java, em comparação ao JAD cada vez mais empoeirado.
fonte
Se você não se importa em ler o bytecode, o javap deve funcionar bem. Faz parte da instalação padrão do JDK.
fonte
Conforme apontado por @MichaelMyers, use
para obter o código de montagem JVM. Você também pode redirecionar a saída para um arquivo de texto para melhor visibilidade.
fonte
Você quer um descompilador java, você pode usar a ferramenta de linha de comando
javap
para fazer isso. Além disso, Java Decompiler HOW-TO descreve como você pode descompilar um arquivo de classe.fonte
o que você está procurando é um descompilador java. Eu recomendo JAD http://www.kpdus.com/jad.html É gratuito para uso não comercial e faz o trabalho.
Observação: isso não tornará o código exatamente igual ao que foi escrito. ou seja, você perderá comentários e possivelmente nomes de variáveis, então será um pouco mais difícil do que apenas ler o código-fonte normal. Se o desenvolvedor for realmente reservado, ele terá ofuscado seu código também, tornando-o ainda mais difícil de ler.
fonte
cpuguru, se seu miniaplicativo foi compilado com javac 1.3 (ou menos), sua melhor opção é usar Jad.
Infelizmente, o último JDK compatível com o JAD 1.5.8 (14 de abril de 2001) é o JDK 1.3.
Se seu miniaplicativo foi compilado com um compilador mais recente, você pode tentar JD-GUI : este descompilador está em desenvolvimento, no entanto, ele gera fontes Java corretas, na maioria das vezes, para classes compiladas com os JDKs 1.4, 1.5 ou 1.6.
DarenW, obrigado por sua postagem. JD-GUI não é o melhor descompilador ainda ... mas estou trabalhando em :)
fonte
jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q= " é a melhor opção amigável para descompilar .class Arquivo....
fonte
Usar Jad para descompilar é provavelmente sua melhor opção. A menos que o código tenha sido ofuscado, ele produzirá um resultado correto.
fonte
Este é um código compilado, você precisará usar um descompilador como o JAD: http://www.kpdus.com/jad.html
fonte
Você precisa usar um descompilador. Outros sugeriram JAD, existem outras opções, JAD é o melhor.
Vou repetir os comentários de que você pode perder um pouco em comparação com o código-fonte original. Vai parecer especialmente engraçado se o código usar genéricos, devido ao apagamento.
fonte
Plugin JAD e / ou JADclipse Eclipse, com certeza.
fonte
Se o arquivo de classe que você deseja examinar for de código aberto, você não deve descompilá-lo, mas em vez disso, anexe os arquivos de origem diretamente em seu IDE. dessa forma, você pode apenas ver o código de alguma classe de biblioteca como se fosse o seu
fonte
Como sugerido, você pode usar o JAD para descompilar e visualizar os arquivos. Para facilitar a leitura, você pode usar o plugin JADclipse para eclipse para integrar JAD diretamente ao eclipse ou usar DJ Java Decompiler, que é muito mais fácil de usar do que JAD de linha de comando
fonte
JAD é uma excelente opção se você deseja código Java legível como resultado. Se você realmente deseja se aprofundar no
.class
formato de arquivo, você vai quererjavap
. Ele vem junto com o JDK e permite que você "descompile" o bytecode hexadecimal em ASCII legível. A linguagem que ele produz ainda é bytecode (nada como Java), mas é bastante legível e extremamente instrutivo.Além disso, se você realmente quiser, pode abrir qualquer
.class
arquivo em um editor hexadecimal e ler o bytecode diretamente. O resultado é idêntico ao de usarjavap
.fonte
Não há necessidade de descompilar Applet.class. O código fonte das classes públicas da API Java vem com o JDK (se você optar por instalá-lo) e é mais legível do que o bytecode descompilado. Você pode encontrá-lo compactado em src.zip (localizado na pasta de instalação do JDK).
fonte
CFR - outro descompilador java é um ótimo descompilador para Java moderno escrito em Java 6.
fonte
você também pode usar os descompiladores java online disponíveis. Por exemplo, http://www.javadecompilers.com
fonte