Ekstrak kode sumber dari file .jar

172

Apakah ada cara untuk mengekstrak kode sumber dari file .jar yang dapat dieksekusi (Java ME)?

hiba
sumber
3
Tetapi perhatikan bahwa melakukan ini mungkin ilegal tergantung pada apakah Anda memiliki hak cipta atas toples, negara tempat Anda tinggal, dan tujuan Anda melakukannya.
Richard
2
Jika itu open source, dapatkan sumbernya dari pengembang. Kalau tidak, "Kepatuhan apa pun dengan EULA akan dihargai".
Andrew Thompson
Periksa dekompiler procyon. Unduh jarnya untuk mendekompilasi file jar. Saya telah memberikan langkah-langkah di bawah ini
nitin angadi

Jawaban:

146

Gunakan JD GUI . Buka aplikasi, seret dan taruh file JAR Anda ke dalamnya.

adarshr
sumber
6
apakah ada cara untuk mendapatkan kode sumber dari .jar tanpa JD GUI?
Zulqurnain Jutt
@ZulqurnainJutt digunakan seperti yang disebutkan dalam jawaban @ elachancejar xf filename.jar
Arvind Sridharan
46

Anda dapat mengekstrak file jar dengan perintah:

jar xf filename.jar

Referensi: Dokumentasi JAR Oracle

keelokan
sumber
18
Ini sama dengan mengganti nama filename.jarmenjadi filename.jar.zipdan kemudian hanya membuka ritsletingnya.
Mathias Bynens
27
Ini tidak mengekstrak kode sumber. Itu mengekstrak kode sumber yang dikompilasi.
0xcaff
5
@caffinatedmonkey, ia mengekstrak kode sumber saat toples berisi file java, misalnya toples dengan nama yang biasanya diakhiri dengan "-sumber". Itu memang hanya mengekstrak file .class ketika toples tidak mengandung file sumber java.
edwardmp
37

Saya percaya ini bisa dilakukan dengan sangat mudah. Anda selalu dapat mengekstrak file sumber (file Java) dari file jar ke zip.

Langkah-langkah untuk mendapatkan sumber file jar sebagai zip:

  1. Unduh JAD dari http://techieme.in/resources-needed/ dan simpan di setiap
    lokasi di sistem Anda.
  2. Seret dan lepas tabung yang Anda inginkan sumbernya di JAD. 3 JAD UI akan terbuka dengan semua struktur paket dalam format pohon.
  3. Klik pada menu File dan pilih save to jar sources.
  4. Ini akan menyimpan sumber sebagai zip dengan nama yang sama dengan toples.

Semoga ini membantu.

Tautan itu mati karena beberapa alasan sehingga menambahkan tautan dari tempat Anda dapat mengunduh JDGUI

Dharam
sumber
1
@Nitesh ... Saya akan memposting tautan yang dihosting di situs web saya ... silakan unduh dari sana
dharam
4
Versi dalam tautan techieme berfungsi dengan baik, terima kasih!
DerStrom8
29

JAR Anda mungkin berisi sumber dan javadoc, dalam hal ini Anda dapat menggunakannya jar xf my.jaruntuk mengekstraknya.

Kalau tidak, Anda dapat menggunakan dekompiler seperti yang disebutkan dalam jawaban adarshr:

Gunakan JD GUI . Buka aplikasi, seret dan taruh file JAR Anda ke dalamnya.

Matthew Willis
sumber
21
Perhatikan bahwa file .jar sebenarnya file .zip dan dapat dibuka dengan alat ZIP apa pun.
Chris Nava
11

Saya tahu ini pertanyaan lama. Masih berpikir itu akan membantu seseorang

1) Buka folder file jar Anda.

2) ubah ekstensi itu menjadi .zip.

3) Anda baik untuk pergi dan dapat dengan mudah mengekstraknya hanya dengan mengklik dua kali.

Catatan: Saya menguji ini di MAC, itu berhasil. Semoga ini akan bekerja pada windows juga.

tajam
sumber
2
@JCodex, saya sedang melakukan proyek penelitian pada alat analisis sentimen "opinionfinder" dan tabungnya memang mengandung kedua file java DAN kelas. jadi komentar Anda tidak 100% benar. Saya tahu itu biasanya hanya berisi .class tetapi tidak dalam kasus ini setidaknya
wired00
2
Solusi Anda hanya akan mengekstrak file .class bukan kode sumber.
Carlos S
Tampak JD-GUI adalah alat multi-platform yang benar-benar mendekompilasi kode dan menunjukkan kode sumber untuk kelas di semua paket. Saya mencobanya dan bisa mendapatkan kode sumber dalam sedetik di MacOS. Saya sudah menginstal Java 8. Anda bisa mendapatkannya di jd.benow.ca Tidak yakin apakah itu berfungsi untuk proyek besar.
Carlos Sá
1
perlu kode sumber yang tidak disediakan dengan cara yang Anda jelaskan
chiragchavda.ks
3

Lakukan hal berikut pada kotak linux Anda di mana java bekerja (jika Anda suka cara terminal dalam melakukan sesuatu)

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 .

CATATAN : seperti yang dikomentari @Richard "ini mungkin ilegal tergantung pada apakah Anda memiliki hak cipta atas toples, negara tempat Anda tinggal, dan tujuan Anda melakukannya."

nitin angadi
sumber
Untuk file kelas tertentu, Anda dapat melakukan java -jar procyon-decompiler-0.5.36.jar paket / dari / the / java / class.class> className.java
nitin angadi
0

AndroChef Java Decompiler menghasilkan kode yang sangat bagus yang dapat Anda gunakan langsung di proyek Anda ...

Nik theGeeK
sumber
-2

Alat di atas mengekstrak toples. Juga ada beberapa alat dan perintah lain untuk mengekstrak toples. Tapi AFAIK Anda tidak bisa mendapatkan kode java jika kode kasus telah dikaburkan.

Vishal
sumber
7
Jawaban terbesar
fnc12
-6

misalkan file JAR Anda ada di C: \ Documents and Settings \ mmeher \ Desktop \ jar dan nama file JAR adalah xx.jar, lalu tuliskan dua perintah di bawah ini di command prompt:

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

2> jar xf xx.jar

Manas
sumber
-6

-Tutup file .jar ke .zip (Di windows cukup ubah ekstensi) -Unzip folder .zip -Anda akan mendapatkan file .java yang lengkap

Pavan T
sumber
3
Sebagai catatan kecil tentang metode ini ... Memang benar bahwa file jar adalah file zip yang bagus. Namun, unziping jar kemungkinan besar akan menghasilkan file * .class, yaitu file java "dikompilasi". Dimungkinkan untuk "mendekompilasi" file kelas ke file java normal. Fungsi ini termasuk dalam banyak IDE
Daniel Hernandez
ini hanya akan membuka kunci file kelas
Harshil