Extrair o código fonte do arquivo .jar

172

Existe uma maneira de extrair o código fonte de um arquivo .jar executável (Java ME)?

hiba
fonte
3
Mas observe que fazer isso pode ser ilegal, dependendo de você possuir os direitos autorais do jar, o país em que vive e seu objetivo.
Richard Richard
2
Se for de código aberto, obtenha o código do desenvolvedor. Caso contrário, "Qualquer conformidade com o EULA será apreciada".
Andrew Thompson
Verifique o descompilador procyon. Faça o download do jar para descompilar os arquivos jar. Eu dei os passos abaixo
nitin angadi

Respostas:

146

Use JD GUI . Abra o aplicativo, arraste e solte seu arquivo JAR nele.

adarshr
fonte
6
existe uma maneira de obter o código-fonte .jar sem JD GUI?
Zulqurnain Jutt
Uso @ZulqurnainJutt como mencionado na resposta de @ elachancejar xf filename.jar
Arvind Sridharan
46

Você pode extrair um arquivo jar com o comando:

jar xf filename.jar

Referências: documentação JAR da Oracle

elachance
fonte
18
Isto é equivalente a renomeação filename.jarpara filename.jar.zipe em seguida, basta descompactá-lo.
Mathias Bynens
27
Isso não extrai o código fonte. Extrai o código fonte compilado.
0xcaff
5
@caffinatedmonkey extrai o código-fonte quando o jar contém arquivos java, por exemplo, jarros com nomes geralmente terminados em "-sources". Na verdade, ele extrai apenas arquivos .class quando o jar não contém nenhum arquivo de origem java.
Edwardmp 2/16
37

Eu acredito que isso pode ser feito com muita facilidade. Você sempre pode extrair os arquivos de origem (arquivos Java) de um arquivo jar em um zip.

Etapas para obter fontes de um arquivo jar como um zip:

  1. Faça o download do JAD em http://techieme.in/resources-needed/ e salve-o em qualquer
    local do seu sistema.
  2. Arraste e solte o jar para o qual você deseja as fontes no JAD. 3 A interface do usuário do JAD será aberta com toda a estrutura do pacote em um formato de árvore.
  3. Clique no menu Arquivo e selecione Salvar fontes do jar.
  4. Ele salvará as fontes como um zip com o mesmo nome que o jar.

Espero que isto ajude.

O link está inoperante devido a algum motivo; portanto, adicione o link de onde você pode fazer o download do JDGUI

dharam
fonte
1
@Nitesh ... Eu estarei postando o link hospedado no meu site ... por favor baixá-lo de lá
Dharam
4
A versão no link techieme funciona muito bem, obrigado!
DerStrom8
29

Seu JAR pode conter origem e javadoc; nesse caso, você pode simplesmente usá-lo jar xf my.jarpara extraí-los.

Caso contrário, você pode usar um descompilador, conforme mencionado na resposta do adarshr:

Use JD GUI . Abra o aplicativo, arraste e solte seu arquivo JAR nele.

Matthew Willis
fonte
21
Observe que os arquivos .jar são na verdade arquivos .zip e podem ser abertos com qualquer ferramenta ZIP.
22611 Chris Nava
11

Eu sei que é uma pergunta antiga Ainda pensei que ajudaria alguém

1) Vá para a pasta do seu arquivo jar.

2) altere a extensão para .zip.

3) Você está pronto e pode facilmente extraí-lo clicando duas vezes nele.

Nota: Eu testei isso no MAC, ele funciona. Espero que ele funcione no Windows também.

afiado
fonte
2
@JCodex, estou fazendo um projeto de pesquisa sobre a ferramenta de análise de sentimentos "opinionfinder" e seu jar contém de fato os arquivos java AND class. portanto, seu comentário não é 100% verdadeiro. Eu sei que normalmente conteria apenas .class mas não neste caso, pelo menos
wired00
2
Sua solução extrairá apenas arquivos .class, não o código-fonte.
Carlos Sá
Parece que o JD-GUI é uma ferramenta multiplataforma que realmente decompila o código e mostra o código-fonte para as classes em todos os pacotes. Eu tentei e poderia obter o código fonte em um segundo no MacOS. Eu tenho o Java 8 instalado. Você pode obtê-lo em jd.benow.ca Não tenho certeza se funciona para projetos grandes.
Carlos Sá
1
código-fonte necessidade que não é fornecer pela maneira que você descreveu
chiragchavda.ks
3

Faça o seguinte na sua caixa Linux onde o java funciona (se você gosta da maneira terminal de fazer as coisas)

cd ~
mkdir decompiled_code && cd decompiled_code
wget https://bitbucket.org/mstrobel/procyon/downloads/procyon-decompiler-0.5.36.jar
java -jar procyon-decompiler-0.5.36.jar /Path/to/your/jar -o .

NOTA : como @Richard comentou "isso pode ser ilegal, dependendo de você possuir os direitos autorais do jar, o país em que vive e seu objetivo de fazê-lo".

nitin angadi
fonte
Para um arquivo de classe específica que você pode fazer java -jar pacote procyon-decompiler-0.5.36.jar / do / a / java / class.class> className.java
nitin Angadi
0

O AndroChef Java Decompiler produz um código muito bom que você pode usar diretamente em seus projetos ...

Nik theGeeK
fonte
-2

As ferramentas acima extraem o frasco. Também existem outras ferramentas e comandos para extrair o jar. Mas AFAIK, você não pode obter o código java, caso o código tenha sido ofuscado.

Vishal
fonte
7
A maior resposta
fnc12 08/07/19
-6

suponha que seu arquivo JAR esteja em C: \ Documents and Settings \ mmeher \ Desktop \ jar e o nome do arquivo JAR seja xx.jar e, em seguida, escreva os dois comandos abaixo no prompt de comando:

1> cd C: \ Documents and Settings \ mmeher \ Desktop \ jar

2> jar xf xx.jar

Manas
fonte
-6

- Arquivo .jar secreto em .zip (no Windows, basta alterar a extensão) - Descompacte a pasta .zip - Você obterá os arquivos .java completos

Pavan T
fonte
3
Como uma pequena observação sobre esse método ... É verdade que os arquivos jar são arquivos zip sofisticados. No entanto, descompactar um jar provavelmente produzirá arquivos * .class, ou seja, arquivos java "compilados". É possível "descompilar" arquivos de classe para arquivos java normais. Esta funcionalidade está incluída em muitos IDEs
Daniel Hernandez
Isso vai arquivos de classe apenas desbloqueio
Harshil