Saya memiliki file JAR dan saya perlu mendapatkan nama semua kelas di dalam file JAR ini. Bagaimana saya bisa melakukan itu?
Saya mencari di Google dan melihat sesuatu tentang JarFile atau Java ClassLoader
tetapi saya tidak tahu bagaimana melakukannya.
JarInputStream
danJarEntry
kelas-kelas yang tidak dapat saya temukan dalam jawaban apa pun dari tautan rujukan Anda.Jawaban:
Sayangnya, Java tidak menyediakan cara mudah untuk membuat daftar kelas di JRE "asli". Itu membuat Anda memiliki beberapa opsi: (a) untuk file JAR tertentu, Anda dapat membuat daftar entri di dalam file JAR tersebut, menemukan
.class
file, dan kemudian menentukan kelas Java mana yang.class
diwakili oleh setiap file; atau (b) Anda dapat menggunakan perpustakaan yang melakukan ini untuk Anda.Opsi (a): Memindai file JAR secara manual
Dalam opsi ini, kami akan mengisi
classNames
dengan daftar semua kelas Java yang ada di dalam file jar di/path/to/jar/file.jar
.Opsi (b): Menggunakan pustaka refleksi khusus
Jambu biji
Jambu biji telah memiliki
ClassPath
setidaknya 14.0, yang telah saya gunakan dan sukai. Satu hal yang menyenangkanClassPath
adalah bahwa ia tidak memuat kelas yang ditemukannya, yang penting saat Anda memindai sejumlah besar kelas.Refleksi
Saya pribadi belum pernah menggunakan perpustakaan Refleksi , tetapi tampaknya sangat disukai. Beberapa contoh bagus disediakan di situs web seperti cara cepat ini untuk memuat semua kelas dalam paket yang disediakan oleh file JAR apa pun , yang mungkin juga berguna untuk aplikasi Anda.
sumber
Anda dapat menggunakan
jar
alat Java . Buat daftar konten file jar dalam file txt dan Anda dapat melihat semua kelas di jar.sumber
unzip -l jarfile.jar
dalam keadaan darurat. File JAR hanyalah file zip dengan manifes!Mungkin Anda mencari
jar
perintah untuk mendapatkan daftar kelas di terminal,dimana,
Atau, grep saja hasil di atas untuk melihat
.class
esnya sajaUntuk melihat jumlah
class
es,sumber
Ini adalah peretasan yang saya gunakan:
Anda dapat menggunakan
java
pelengkapan otomatis seperti ini:Ini akan memberi Anda daftar kelas yang tersedia untuk dilalui sebagai kelas awal. Tentu saja, mencoba menggunakan salah satu yang tidak memiliki file utama tidak akan melakukan apa-apa, tetapi Anda dapat melihat apa yang
java
menurut kelas di dalam.jar
dipanggil.sumber
Anda bisa menggunakan
sumber
Anda dapat mencoba:
Ini akan berguna hanya jika jar Anda dapat dieksekusi, yaitu dalam manifes Anda telah menetapkan beberapa kelas sebagai kelas utama
sumber
Perintah di bawah ini akan mencantumkan konten file jar .
perintah: -
unzip -l jarfilename.jar
.sampel o / p: -
Archive: hello-world.jar Length Date Time Name --------- ---------- ----- ---- 43161 10-18-2017 15:44 hello-world/com/ami/so/search/So.class 20531 10-18-2017 15:44 hello-world/com/ami/so/util/SoUtil.class --------- ------- 63692 2 files
Menurut manual
unzip
sumber
Anda bisa mencoba ini:
Ini akan berguna hanya jika jar Anda dapat dieksekusi, yaitu dalam manifes Anda telah menetapkan beberapa kelas sebagai kelas utama
sumber
Gunakan skrip bash ini:
ini akan mencantumkan kelas-kelas di dalam toples di direktori Anda dalam bentuk:
Output sampel:
Di windows Anda dapat menggunakan PowerShell:
sumber
Deskripsi Solusi : Eclipse IDE dapat digunakan untuk ini dengan membuat proyek java sampel dan menambahkan semua botol di jalur Project Build
LANGKAH di bawah ini :
Buat contoh proyek Eclipse Java.
Semua toples yang Anda miliki di Build Path-nya
CTRL + SHIFT + T dan Ketik nama kelas lengkap.
Hasil akan ditampilkan di jendela dengan semua toples memiliki kelas itu. Lihat gambar terlampir.
sumber
windows cmd: Ini akan berfungsi jika Anda memiliki semua toples te di direktori yang sama dan menjalankan perintah di bawah ini
sumber
Mac OS: Di Terminal:
sumber