Saat ini saya sedang mengerjakan aplikasi polish J2ME, hanya menyempurnakannya. Saya mengalami kesulitan untuk mendapatkan versi yang tepat dari file jar. Apakah ada cara untuk menemukan versi file jar untuk impor yang dilakukan di kelas? Maksud saya, jika Anda memiliki sesuatu, impor xyz; bisakah kita mengetahui versi dari paket jar xy milik?
jar
version
executable-jar
Ritesh Mengji
sumber
sumber
sqljdbc42.jar
file yang saya gunakan dengan Cognos, namun Cognos dapat melaporkan sebuah versi (4.2.6420.100). Dari mana mendapatkan versi ini jika tidak dicatat dalam manifes?Anda perlu mengekstraknya dan memeriksa
META-INF/MANIFEST.MF
file -nya , misatau lebih spesifik:
sumber
Hanya untuk memperluas jawaban di atas, di dalam file META-INF / MANIFEST.MF di JAR, Anda mungkin akan melihat baris:
Manifest-Version: 1.0
← Ini BUKAN nomor versi jar!Anda perlu mencari
Implementation-Version
yang, jika ada, merupakan string teks bebas sehingga sepenuhnya terserah penulis JAR untuk apa yang akan Anda temukan di sana. Lihat juga spesifikasi Oracle Docs dan Package Versionsumber
Sekadar melengkapi jawaban di atas.
File manifes terletak di dalam jar di
META-INF\MANIFEST.MF
jalur.Anda dapat memeriksa konten jar di semua pengarsip yang mendukung zip.
sumber
Setiap versi jar memiliki checksum unik. Anda dapat menghitung checksum untuk toples Anda (yang tidak memiliki info versi) dan membandingkannya dengan berbagai versi toples. Kami juga dapat mencari botol menggunakan checksum.
Lihat Pertanyaan ini untuk menghitung checksum: Apa cara terbaik untuk menghitung checksum untuk file yang ada di mesin saya?
sumber
Pada dasarnya Anda harus menggunakan
java.lang.Package
kelas yang menggunakan classloader untuk memberikan informasi tentang kelas Anda.contoh:
Saya pikir logback diketahui menggunakan fitur ini untuk melacak nama / versi JAR setiap kelas dalam stacktraces yang dihasilkan.
lihat juga http://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html#wp90779
sumber
Program sederhana ini akan mencantumkan semua kasus untuk versi jar yaitu
File manifes tidak ditemukan
Ini menggunakan jar javaxt-core yang dapat diunduh dari http://www.javaxt.com/downloads/
sumber
Saya terlambat tetapi Anda dapat mencoba dua metode berikut
menggunakan kelas yang dibutuhkan ini
Metode ini memungkinkan saya mengakses atribut jar. Saya suka kompatibel ke belakang dan menggunakan yang terbaru. Jadi saya menggunakan ini
Ini bekerja dengan baik ketika Anda menggunakan maven dan membutuhkan detail pom untuk kelas yang dikenal. Semoga ini membantu.
sumber
Untuk Linux, coba berikut ini:
Temukan . -name "YOUR_JAR_FILE.jar" -exec zipgrep "Implementasi-Versi:" '{}' \; | awk -F ':' '{print $ 2}'
sumber
Jika Anda memiliki winrar, buka toples dengan winrar, klik dua kali untuk membuka folder
META-INF
. EkstrakMANIFEST.MF
danCHANGES
file ke lokasi mana pun (misalnya desktop).Buka file yang diekstrak di editor teks: Anda akan melihat Versi-Implementasi atau versi rilis.
sumber
Anda dapat memfilter versi dari file MANIFEST menggunakan
unzip -p my.jar META-INF/MANIFEST.MF | grep 'Bundle-Version'
sumber
Bundle-Version
.Pikir saya akan memberikan jawaban yang lebih baru karena pertanyaan ini masih muncul cukup tinggi pada pencarian.
Memeriksa Versi CLi JAR:
Jalankan perintah berikut pada file jar CLi:
Contoh Output:
Versi CLi tercantum di atas.
Untuk mendapatkan Versi Server, jalankan perintah berikut:
(di atas akan bervariasi berdasarkan penerapan otentikasi Anda, harap ubah sesuai)
Contoh Output:
sumber
Itu dapat diperiksa dengan perintah
java -jar jarname
sumber
main()
metode JAR