Como posso abrir Java?arquivos de classe de uma forma legível?

Estou a tentar descobrir o que um ficheiro de classe de uma applet Java está a fazer debaixo do capô. Abri - lo com o bloco de notas ou o bloco de texto só mostra um monte de gobbledy-gook.

Há alguma forma de o transformar num formato algo legível para que eu possa tentar descobrir o que está a fazer?

  • ambiente = = Windows W/ VS 2008 instalado.
Author: Pops, 2008-09-17

17 answers

Jd-gui é o melhor decompilador de momento. ele pode lidar com recursos mais recentes em Java, em comparação com o Jad getting-dusty.

 187
Author: DarenW, 2013-10-19 02:20:22

Se não te importas de ler bytecode, o javap deve funcionar bem. Faz parte da instalação padrão do JDK.

Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure
 67
Author: Michael Myers, 2008-09-16 20:08:16

Se quiser um descompilador java, poderá usar a ferramenta da linha de comandos javap para fazer isto. Além disso, Java Descompiler HOW-TO descreve como você pode descompilar um arquivo de classe.

 7
Author: Drew Frezell, 2008-09-16 20:05:14

Usar Jad para descompilar é provavelmente a tua melhor opção. A menos que o código tenha sido ofuscado, vai produzir um bom resultado.

 2
Author: Rasmus Faber, 2008-09-16 20:03:26

Cpuguru, se a sua 'applet' foi compilada com o javac 1.3 (ou menos), a sua melhor opção é usar o Jad.

Infelizmente, o último JDK apoiado por Jad 1.5.8 (14 de Abril de 2001) é JDK 1.3.

Se o seu applet foi compilado com um compilador mais recente, você poderia tentar JD-GUI : este descompilador está em desenvolvimento, no entanto, ele gera fontes Java corretas, na maioria das vezes, para classes compiladas com o JDKs 1.4, 1.5 ou 1.6.

DarenW, obrigado pela tua ajuda. postar. O JD-GUI ainda não é o melhor decompilador ... mas estou a trabalhar em:)
 2
Author: Emmanuel Dupuy, 2008-12-23 17:56:50
Isso é um código compilado, vais precisar de usar um descompilador como o JAD: http://www.kpdus.com/jad.html
 1
Author: cynicalman, 2008-09-16 20:03:44
Tens de usar um descompilador. Outros têm sugerido JAD, há outras opções, JAD é o melhor. Faço eco dos comentários de que pode perder um pouco em comparação com o código fonte original. Vai parecer especialmente engraçado se o código usado genéricos, devido ao apagamento.
 1
Author: Zac Gochenour, 2008-09-16 20:12:50

'plugin' de Eclipse do JAD e/ou do JADclipse, com certeza.

 1
Author: John Gardner, 2008-09-16 20:35:47

Se o ficheiro de classe que deseja ver for de código aberto, não o deve descompilar, mas sim anexar os ficheiros de código directamente ao seu IDE. dessa forma, você pode apenas ver o código de alguma classe de biblioteca como se fosse o seu próprio

 1
Author: arturh, 2009-05-13 10:54:10

Jd-gui http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q = " é a melhor e mais amigável opção para descompilação .ficheiro da turma....

 1
Author: Karthikeyan Subramanian, 2013-09-27 10:05:57

Como sugerido você pode usar JAD para descompilar e ver os arquivos. Para facilitar a leitura, pode usar o 'plugin' JADclipse para o eclipse para integrar o JAD directamente ao eclipse ou usar o DJ Java Descompiler, que é muito mais fácil de usar do que a linha de comandos JAD

 0
Author: , 2008-09-16 20:07:55

O JAD é uma excelente opção se quiser um código Java legível como resultado. Se você realmente quiser investigar os internos do formato de Arquivo .class, você vai querer javap. Está junto com o JDK e permite "descompilar" o bytecode hexadecimal em ASCII legível. A linguagem que produz ainda é bytecode (nada como Java), mas é razoavelmente legível e extremamente instrutiva.

Também, se você realmente quiser, você pode abrir qualquer arquivo {[[[0]} em um editor hex e ler o bytecode diretamente. O resultado é idêntico ao de javap.

 0
Author: Daniel Spiewak, 2008-09-16 20:09:25
Não há necessidade de descompilar Applet.classe. A API pública Java classes sourcecode vem com o JDK (se você optar por instalá-lo), e é melhor legível do que o bytecode descompilado. Você pode encontrar comprimido no src.zip (localizado na sua pasta de instalação do JDK).
 0
Author: Arno, 2008-09-16 20:45:34

CFR-another java decompiler is a great decompiler for modern Java written i Java 6.

 0
Author: tidbeck, 2017-01-18 13:54:18
Como apontado por @ MichaelMyers, use
javap -c <name of java class file> 
Para obter o código de montagem da JVM. Você também pode redirecionar a saída para um arquivo de texto para uma melhor visibilidade.
javap -c <name of java class file> > decompiled.txt
 0
Author: Nilashish C, 2018-02-16 15:51:07

Você também pode usar os descompiladores java online disponíveis. Por exemplo http://www.javadecompilers.com

 0
Author: Prachi Sharma, 2018-02-23 11:50:23