Sebagai magang, saya menggunakan kode perusahaan dalam proyek saya dan mereka biasanya mengirimi saya jar
file untuk dikerjakan. Saya menambahkannya ke build path
in Eclipse
dan biasanya semuanya baik-baik saja dan keren.
Namun, saya penasaran untuk mengetahui, apa isi setiap kelas dan ketika saya mencoba membuka salah satu kelas di jar
file tersebut, saya diberi tahu bahwa saya memerlukan file sumber.
Apa artinya ini? Saya berasal dari latar belakang C / C ++ jadi apakah jar
mirip dengan .o
file yang sudah dikompilasi dan yang bisa saya lihat hanyalah .h
barangnya? Atau apakah ada kode sebenarnya dalam jar
file yang saya gunakan yang dienkripsi sehingga saya tidak dapat membacanya?
Terima kasih atas semua jawabannya!
Sunting:
Terima kasih, teman-teman, saya tahu itu semacam arsip tetapi saya bingung mengapa ketika saya mencoba membuka .class
file, saya mendapat banyak karakter acak. Outputnya mirip ketika saya mencoba membuka .o
file di C jadi saya hanya ingin memastikan.
Terima kasih!
Jawaban:
File JAR sebenarnya hanyalah file ZIP. Ini bisa berisi apa saja - biasanya berisi kode Java yang dikompilasi (* .class), tetapi terkadang juga kode sumber Java (* .java).
Namun, Java dapat didekompilasi - jika pengembang mengaburkan kodenya, Anda tidak akan mendapatkan nama kelas / fungsi / variabel yang berguna.
sumber
File jar pada dasarnya adalah file zip yang berisi file .class dan kemungkinan sumber daya lain (dan metadata tentang jar itu sendiri). Sangat sulit untuk membandingkan C dengan Java, karena kode byte Java menyimpan lebih banyak metadata daripada kebanyakan format biner - tetapi file kelas adalah kode yang dikompilasi, bukan kode sumber.
Jika Anda membuka file jar dengan utilitas zip atau menjalankannya,
jar xf foo.jar
Anda dapat mengekstrak file darinya, dan melihatnya. Perhatikan bahwa Anda tidak memerlukan file jar untuk menjalankan kode Java - classloader dapat memuat data kelas langsung dari sistem file, atau dari URL, serta dari file jar.sumber
Cara terbaik untuk memahami apa isi file jar adalah dengan menjalankan ini:
Pergi ke baris perintah dan jalankan
jar tvf jarfilename.jar
sumber
Sebuah
jar
file adalah file zip dengan beberapa file tambahan yang mengandung metadata. (Terlepas dari ekstensi .jar, ini dalam format zip, dan utilitas apa pun yang menangani file .zip juga dapat menangani file .jar.)http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html
File jar dapat berisi semua jenis file, tetapi biasanya berisi file kelas dan file konfigurasi pendukung (properti), grafik, dan file data lain yang diperlukan oleh aplikasi.
File kelas berisi kode Java yang dikompilasi, yang dapat dieksekusi oleh Java Virtual Machine.
http://en.wikipedia.org/wiki/Java_class_file
sumber
JAR adalah singkatan dari Java ARchive. Ini adalah format file berdasarkan format file ZIP yang populer dan digunakan untuk menggabungkan banyak file menjadi satu. Meskipun JAR dapat digunakan sebagai alat pengarsipan umum, motivasi utama untuk pengembangannya adalah agar applet Java dan komponen yang diperlukannya (file .class, gambar, dan suara) dapat diunduh ke browser dalam satu transaksi HTTP, daripada membuka koneksi baru untuk setiap bagian. Ini sangat meningkatkan kecepatan applet yang dapat dimuat ke halaman web dan mulai berfungsi. Format JAR juga mendukung kompresi, yang mengurangi ukuran file dan lebih meningkatkan waktu download. Selain itu, entri individu dalam file JAR dapat ditandatangani secara digital oleh pembuat applet untuk mengotentikasi asalnya.
sumber
File jar berisi kelas biner Java yang dikompilasi dalam bentuk
*.class
yang dapat diubah menjadi.java
kelas yang dapat dibaca dengan mendekompilasinya menggunakan beberapa dekompiler open source. Jar juga memiliki pilihanMETA-INF/MANIFEST.MF
yang memberitahu kita bagaimana menggunakan file jar - menentukan file jar lainnya untuk dimuat dengan jar.sumber
Jar (Java Archive) berisi kumpulan file .class.
1.Untuk membuat File Jar (File Zip)
if one .class (say, Demo.class) then use command jar -cvf NameOfJarFile.jar Demo.class (usually it’s not feasible for only one .class file) if more than one .class (say, Demo.class , DemoOne.class) then use command jar -cvf NameOfJarFile.jar Demo.class DemoOne.class if all .class is to be group (say, Demo.class , DemoOne.class etc) then use command jar -cvf NameOfJarFile.jar *.class
2. Untuk mengekstrak File Jar (Unzip File)
3. Untuk menampilkan daftar isi
sumber
File .jar mirip dengan file .exe. Intinya, keduanya adalah file zip yang dapat dieksekusi (algoritme zip berbeda).
Dalam file jar, Anda akan melihat folder dan file kelas. Setiap file kelas mirip dengan file .o Anda, dan merupakan arsip java yang dikompilasi.
Jika Anda ingin melihat kode dalam file jar, unduh java decompiler (terletak di sini: http://java.decompiler.free.fr/?q=jdgui ) dan ekstraktor .jar (7zip berfungsi dengan baik).
sumber
JD-GUI adalah alat yang sangat berguna untuk menjelajahi dan mendekompilasi JAR
sumber
File .jar berisi kode yang dikompilasi (file * .class) dan data / resource lain yang terkait dengan kode tersebut. Ini memungkinkan Anda untuk menggabungkan beberapa file menjadi satu file arsip. Ini juga berisi metadata. Karena ini adalah file zip, ia mampu mengompresi data yang Anda masukkan ke dalamnya.
Beberapa hal yang menurut saya berguna.
http://www.skylit.com/javamethods/faqs/createjar.html
http://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html
Buku OSGi dalam praktiknya mendefinisikan file JAR sebagai, "JAR adalah file arsip berdasarkan format file ZIP, yang memungkinkan banyak file untuk digabungkan menjadi satu file. Biasanya file yang terdapat dalam arsip adalah campuran dari file kelas dan resource Java yang dikompilasi file seperti gambar dan dokumen. Selain itu, spesifikasi menentukan lokasi standar dalam arsip JAR untuk metadata - folder META-INF - dan beberapa nama file standar dan format di dalamnya secara langsung, yang terpenting adalah file MANIFEST.MF. "
sumber
Cukup periksa apakah
aopalliance.jar
file tersebut memiliki.java
file, bukan.class
file. jika demikian, cukup ekstrak file jar, impor di eclipse & buat jar melalui eclipse. Itu berhasil untuk saya.sumber
Saat belajar tentang JAR, saya menemukan utas ini, tetapi tidak bisa mendapatkan informasi yang cukup untuk orang-orang seperti saya, yang memiliki latar belakang .NET, jadi saya akan menambahkan beberapa poin yang dapat membantu orang-orang seperti saya dengan latar belakang .NET.
Pertama kita perlu mendefinisikan konsep yang mirip dengan JAR di .NET yang mana Assembly dan assembly memiliki banyak kesamaan dengan file Java JAR.
Jadi, rakitan adalah unit dasar dari pengemasan kode di lingkungan .NET. Assemblies berdiri sendiri dan biasanya berisi kode perantara dari kompilasi kelas, metadata tentang kelas, dan file lain yang diperlukan oleh kode paket untuk melakukan tugasnya. Karena rakitan adalah unit dasar dari pengemasan kode, beberapa tindakan yang terkait dengan interaksi dengan tipe harus dilakukan di tingkat rakitan. Misalnya , pemberian izin keamanan, penerapan kode, dan pembuatan versi dilakukan di tingkat perakitan.
File Java JAR melakukan tugas serupa di Java dengan sebagian besar perbedaan dalam implementasinya. Assemblies biasanya disimpan sebagai EXE atau DLLs sementara file JAR disimpan dalam format file ZIP .
Sumber Informasi -> 5- Sidang
sumber