Melihat konten file .jar

226

Apa cara termudah untuk melihat kelas, metode, properti, dll. Di dalam file jar? Saya mencari sesuatu yang setara dengan Lutz Roeder .NET Reflector - untuk Java

Dani
sumber
12
Mengapa Anda tidak menerima jawabannya?
Sanghyun Lee
4
@HughLee Orang yang menanyakan ini bertanya 8 tahun yang lalu . Itu sebabnya perlu ada penerimaan otomatis setelah jawaban mengenai 100 upvotes IMO
Kolob Canyon
@KolobCanyon benar, tetapi jawaban teratas mereka dikirim pada hari yang sama dengan yang ini
Pranav A.
1
Jawabannya datang dari :https://superuser.com/a/808938/1045397 Anda dapat melakukannya dengan vim vim file_name.jar
byte mamba

Jawaban:

280

Menggunakan JDK, jar -tfakan mencantumkan file dalam toples. javapakan memberi Anda lebih banyak detail dari file kelas tertentu.

Tom Hawtin - tackline
sumber
3
@salvob Anda tidak perlu tanda hubung seperti yang diambil setelahnya tardengan opsi wajib.
Tom Hawtin - tackline
2
FYI, Anda mungkin perlu menambahkan C:\Program Files\Java\jdk<version>\binvariabel lingkungan PATH sistem atau pengguna Anda sebelum dapat digunakan jarsebagai perintah sistem. (Di mana <version> adalah nomor build versi jdk Anda. Check in C:\Program Files\Java)
Tezra
1
contoh javap: javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC
untuk melihat konten file non-kelas (seperti manifes) Anda ingin melakukan sesuatu seperti ini: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC
55

Saya biasanya membukanya dengan 7-Zip ... Ini memungkinkan setidaknya untuk melihat paket dan kelas dan sumber daya.
Haruskah saya perlu melihat metode atau bidang, saya akan menggunakan Jad tapi tentu saja, lebih baik mengandalkan JavaDoc (baik) ...

Sekarang, di suatu tempat di SO disebutkan beberapa plug-in Eclipse, untuk menemukan di mana file jar kelas berada, mungkin mereka dapat berbuat lebih banyak (mis. Apa yang Anda minta).

[EDIT] Referensi ke utas SO. Bukan apa yang ditanyakan, tetapi entah bagaimana terkait, sehingga berguna: Java: Bagaimana saya tahu file jar mana yang akan digunakan diberi nama kelas?

PhiLho
sumber
Tautan ke situs Jad telah dihapus ketika URL diparkir. Itu masih dapat ditemukan di web.archive.org/web/20080106184313/http://www.kpdus.com/… tetapi Jad sudah usang hari ini.
PhiLho
35

Apa yang saya gunakan secara pribadi adalah JD-GUI. Ini adalah 'dekompiler' gratis, karena memungkinkan Anda untuk melihat kode sumber, kelas, dan objek di kelas, serta melihat struktur file di menu pohon di sebelah kiri. Namun, itu tidak memungkinkan Anda untuk memodifikasi kelas secara langsung.

Situs web JD-GUI: http://jd.benow.ca/

Azulflame
sumber
Ini berfungsi lintas platform sementara 7-Zip yang disebutkan dalam jawaban lain adalah khusus Windows.
Brad Cupit
Saya menggunakan Archive Utility pada OS X, bekerja dengan baik. Sebagian besar (un) utilitas zip harus berfungsi, terlepas dari platform.
Greenonline
23

Jika seseorang belum mengetahui hal ini, file JAR hanyalah file ZIP yang berisi kelas program, sumber daya, dll., Dan beberapa metadata. Anda dapat mengekstrak satu untuk melihat bagaimana itu disatukan.

Karenanya saya menggunakan unzipperintah yang mudah diingat dan digunakan.

unzip -l <jar-file-name>.jar

Misalnya, jika Anda memiliki file jar dengan nama test.jarmaka unzip -l test.jarakan mendaftar semua konten file jar.

Walaupun semua jawaban lain bagus, tetapi di sebagian besar dari mereka, Anda harus menggunakan beberapa perangkat lunak seperti 7 zipatau JDKatau alat gerhana lainnya sementara ini tidak mengharuskan Anda untuk memiliki salah satu dari ini s / w besar dan itu datang secara default di linux dan mac jadi sangat ringan dan mudah digunakan .

Anda juga bisa menggunakan zipinfo <your jar file>. jika OS Anda mendukung ini.

Opster Elasticsearch Ninja
sumber
1
@ Terima kasih atas sarannya. akan menambahkannya ke jawaban saya
Opster Elasticsearch Ninja
1
Jika file explorer mendukung zip, mengganti nama stoples menjadi .zip juga berfungsi (misalnya pada windows)
Rhayene
16

Nama metode, bidang, dll.

Dengan menambahkan toples ke proyek dalam IDE, Anda biasanya dapat melihat metode dan nama bidang, tetapi bukan implementasi terperinci. NetBeans dapat melakukannya, Eclipse mungkin, IntelliJ mungkin, dll. Anda dapat menelusuri struktur tabung langsung di dalam IDE.

Hanya isinya

Untuk apa pun seperti melihat konten, Anda dapat menggunakan:

  • jar tvf jarfile.jar
  • winzip atau alat zip apa pun

Kode sumber

Untuk mengakses kode sumber, Anda akan menggunakan dekompiler seperti JAD atau salah satu dari frontend-nya atau decompiler lainnya. Jika kode tersebut dikaburkan, maka ...

Komunitas
sumber
10

Memperluas jawaban Tom Hawtin, Anda dapat mengirim daftar untuk memfilter kelas atau file yang diinginkan:

jar tf my-fat-jar-file.jar | grep filename

Ini harus bekerja pada bash / zsh dan similars, atau eshell emacs '.

Informasi tambahan: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html

Jose Miguel
sumber
7
jar -tvf file_name.jar

di atas hanya akan mencetak nama file .

Untuk melihat konten file, Anda dapat mengekstrak file dalam folder dengan:

jar -xvf file_name.jar

ini akan membuka zip file jar & meletakkan konten di direktori yang sama di mana Anda menjalankan ini.

Atau di Windows ganti nama file .jar menjadi .zip & kemudian Anda bisa unzip untuk mengekstrak & melihat konten file jar. Sebagai jar secara internal file zip.

Anil Kapoor
sumber
6

Gunakan WinRar . Ini akan membuka struktur folder untuk Anda secara utuh. Juga memungkinkan pengeditan dalam arsip, sambil mempertahankan jalur.

Lagipula, file JAR adalah arsip ZIP saja.

M N
sumber
6

Jika Anda ingin melihat apa yang ada di dalamnya, cukup ganti nama sebagai opsi pertama di bawah ini ..

  1. F2 & Rename to jarfile.zip // Gunakan unzipper ...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar

Beberapa orang Jawa
sumber
5

Jika saya mengerti dengan benar, Anda ingin melihat tidak hanya kelas tetapi juga metode, properti, dan sebagainya. Satu-satunya alat yang saya tahu dapat melakukannya adalah Eclipse - jika Anda menambahkan jar ke proyek classpath, Anda akan dapat menelusuri kelas-kelasnya dengan metode dan properti menggunakan paket explorer biasa.

Bagaimanapun, ini adalah ide yang bagus untuk alat Java mandiri yang bagus

Yoni Roit
sumber
Perhatikan bahwa toples harus berada di folder "Perpustakaan yang direferensikan", bukan hanya "lib". Dan dalam kasus pustaka Apache Commons, Anda tidak menelusuri source.jar, Anda menelusuri yang asli dan kemudian melampirkan sumber ketika Eclipse bertanya.
Noumenon
4

Jad klunky dan tidak lagi dipertahankan. Saya telah beralih ke "Java Decompiler" , yang memiliki UI yang apik dan dukungan untuk fitur bahasa baru.

Setiap decompiler yang saya gunakan, berjalan ke kode yang tidak berhasil diurai. Bagi mereka, ini membantu untuk memahami kode byte Java yang dibongkar yang dihasilkan oleh alat JDK standar, javap .

erickson
sumber
3

Nah, file jar hanya file zip, jadi jika Anda unzip (dengan utilitas unzipping favorit Anda), Anda mendapatkan semua file di dalamnya.

Jika Anda ingin melihat ke dalam file kelas untuk melihat metode, Anda akan memerlukan alat untuk itu. Seperti yang dikatakan PhiLho, Eclipse dapat melakukan itu (secara default), dan saya pikir sebagian besar IDE Java mampu melakukannya.

Jeroen Heijmans
sumber
3

Dalam Eclipse 3.4 lakukan

  1. Seret file jar tersebut ke dalam proyek Java. Salinan file jar muncul.
  2. Klik kanan pada file jar, dan pilih "Build Path" -> "Add to Build Path".
  3. File jar dipindahkan ke simpul "Referenced Libraries", tempat itu dapat dibuka dan dinavigasi di panel Project Explorer.

Jika melihat kode sumber juga merupakan masalah, buka pertanyaan baru.

Untuk navigasi pada level Jar-file (sebagai file zip) saya menggunakan 7zip yang bekerja dengan sangat baik, dan memungkinkan melihat dan mengedit entri yang bagus untuk pemecahan masalah.

Thorbjørn Ravn Andersen
sumber
3

Salah satu cara untuk melakukan ini adalah membuka perspektif dalam "Package explorer". Melakukan ini, Anda dapat melihat struktur tabung Anda dengan detail kelas. Untuk ini periksa folder perpustakaan di proyek Anda menggunakan paket explorer.

Window >> Show View >> Other >> Java >> Package Explorer

Cara lain adalah, Anda bisa menggunakan JarPlug sebagai plugin gerhana. Ini berfungsi di eclipse / springsource

http://jar-plug.sourceforge.net/

Ziya
sumber
3

Jika Anda berada di windows dan menggunakan PowerShell dan Anda mencari file dalam toples yang dapat Anda lakukan:

jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}
james
sumber
2

Anda dapat membukanya dengan sebagian besar utilitas dekompresi hari ini, kemudian dapatkan sesuatu seperti DJ Java Decompiler jika Anda ingin melihat sumbernya.

John T
sumber
2

Persyaratan saya adalah untuk melihat konten file (seperti file properti) di dalam toples, tanpa benar-benar mengekstraksi toples. Jika ada yang mencapai utas ini seperti saya, coba perintah ini -

unzip -p myjar.jar myfile.txt

Ini bekerja dengan baik untuk saya!

Subhashree Pradhan
sumber
2

Saya pikir Java Decomplier adalah pilihan terbaik yang dapat Anda unduh dari sini: http://jd.benow.ca/ Pratinjau

Ziad Alzarka
sumber
1

Saya lebih suka JAR Browser , ia memiliki antarmuka yang sederhana di mana Anda dapat menelusuri beberapa JAR, dan mencari kelas tertentu di beberapa JAR secara bersamaan.

audiodude
sumber
1

Eclipse 3.4 JDT

Ini bukan cara tercepat karena Anda harus menyeretnya ke gerhana Anda terlebih dahulu. Tetapi Anda akan memiliki penjelajahan kelas java penuh, bahkan dengan dekompilasi diaktifkan.

Dennis C
sumber
1

Saya telah menetapkan tindakan default di windows ke "Open with WinZip". Ini membuatnya mudah untuk mengelola JAR sebagai arsip. Anda bahkan dapat menambah / menghapus file secara manual.

Chris Nava
sumber
1

Ini Jar Explorer cukup baik.
Mendukung tiga jenis dekompiler: JD, Procyon dan Fernflower.
Mengizinkan untuk mencari file dan duplikat di arsip java apa pun.
Juga pengguna dapat memodifikasi jar oleh file D & D dan mengedit beberapa file non-kelas. masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

pengguna12377884
sumber
Tolong jangan hanya memposting beberapa alat atau perpustakaan sebagai jawaban. Setidaknya tunjukkan bagaimana cara memecahkan masalah dalam jawaban itu sendiri.
Das_Geek
0

Anda bisa mencoba JarSpy . Ada versi plugin IDEA yang saya gunakan.

Dan Dyer
sumber
0

IDE Anda juga harus mendukung ini. IDE saya (SlickeEdit) menyebutnya "tag library." Cukup tambahkan pustaka tag untuk file jar, dan Anda harus dapat menelusuri kelas dan metode secara hierarkis.

POHON
sumber
0

Anda bisa mencoba JarNavigator untuk melihat dan mencari konten file jar.

Kumaravel
sumber
0

java -xf some-j.jar akan membuka zip file JAR.

MKatleast3
sumber
it's jar -xf someJar.jar
Prajwal