Bir .jar dosyasının içeriğini görüntüleme


227

Bir jar dosyası içindeki sınıfları, yöntemleri, özellikleri vb. Görüntülemenin en kolay yolu nedir? Java için çok kullanışlı Lutz Roeder .NET Reflektör'e eşdeğer bir şey arıyorum


12
Cevabı neden kabul etmiyorsun?
Sanghyun Lee

4
@HughLee Bunu soran adam 8 yıl önce sordu . Bu yüzden bir cevap 100 upvotes IMO
Kolob Canyon

@KolobCanyon true, ancak en çok oy alan cevap bu sorulduğunda aynı gün gönderildi
Pranav A.

1
Cevap :https://superuser.com/a/808938/1045397 adresinden gelir. Vim vim file_name.jar
byte mamba

Yanıtlar:


281

JDK kullanıldığında, jar -tfkavanozdaki dosyalar listelenir. javapsize belirli bir sınıf dosyasından daha fazla ayrıntı verecektir.


3
@salvob tarZorunlu seçeneklerle birlikte tireye ihtiyacınız yoktur .
Tom Hawtin - tackline

2
FYI, Sistem komutu olarak C:\Program Files\Java\jdk<version>\binkullanabilmeniz için sisteminize veya kullanıcı PATH ortam değişkeninize eklemeniz gerekebilir jar. (Burada <sürüm> jdk sürüm oluşturma numaranızdır. Check-in yapın C:\Program Files\Java)
Tezra

1
javap örneği: javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC

sınıf dışı dosyaların içeriğini (manifest gibi) görmek için şöyle bir şey yapmak istersiniz: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC

56

Genellikle 7-Zip ile açarım ... En azından paketleri, sınıfları ve kaynakları görmeyi sağlar.
Yöntemleri veya alanları görmem gerekirse, Jad'ı kullanırdım ama elbette, (iyi) JavaDoc'a güvenmek daha iyidir ...

Şimdi, SO'da bir yerde, bir sınıfın hangi kavanoz dosyasında bulunduğunu bulmak için bazı Eclipse eklentilerinden bahsedildi, belki daha fazlasını yapabilirler (yani, ne istersen).

[EDIT] SO iş parçacığına referans. Ne sorulmadı, ama bir şekilde ilişkili, bu yüzden yararlı: Java: Bir sınıf adı verildiğinde hangi jar dosyasının kullanılacağını nasıl bilebilirim?


URL park edildiğinde Jad sitesinin bağlantısı kaldırıldı. Yine de web.archive.org/web/20080106184313/http://www.kpdus.com/… adresinde bulunabilir, ancak Jad bugün zaten modası geçmiş.
PhiLho

35

Kişisel olarak kullandığım şey JD-GUI. Bu, kaynak kodunu, sınıfları ve sınıflardaki nesneleri görmenizi ve soldaki ağaç menüsünde dosya yapısını görmenizi sağladığından ücretsiz bir 'decompiler' dir. Ancak, sınıfları doğrudan değiştirmenize izin vermez.

JD-GUI'nin web sitesi: http://jd.benow.ca/


Başka bir cevapta bahsedilen 7-Zip Windows'a özgü iken, bu platformlar arası çalışır.
Brad Cupit

Ben kullanılan Arşiv Utility , OS X üzerinde para cezası çalıştı. Çoğu (un) zip yardımcı programı, platformdan bağımsız olarak çalışmalıdır.
Greenonline

23

Birinin bunu zaten bilmemesi durumunda, JAR dosyası yalnızca programın sınıflarını, kaynaklarını vb. İçeren bir ZIP dosyası ve bazı meta verilerdir. Nasıl bir araya getirildiğini görmek için birini çıkarabilirsiniz.

Bu yüzden unziphatırlaması ve kullanımı kolay bir komut kullanıyorum.

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

Eğer ada sahip bir kavanoz dosyanız varsa Örneğin, test.jarsonra unzip -l test.jarkavanoz dosyanın tüm içeriğini listeler.

Diğer tüm cevaplar büyük olmakla birlikte, ancak bunların çoğunda, sen gibi bazı yazılım kullanmak zorunda kalacak 7 zipya da JDKbu gerektirmez iken w / bu büyük s herhangi birine sahip diğer bazı aracı tutulması veya ve linux varsayılan olarak geliyor ve mac böylece çok hafif ve kullanımı kullanışlı .

Ayrıca kullanabilirsiniz zipinfo <your jar file>. İşletim sisteminiz bunu destekliyorsa.


1
@ Öneri için teşekkürler. Cevabımı ekleyeceğim
Opster Elasticsearch Ninja

1
Dosya gezgini
zip'i

16

Yöntem adları, alanlar vb.

IDE'deki bir projeye bir kavanoz ekleyerek, genellikle yöntemleri ve alan adlarını görebilirsiniz, ancak ayrıntılı uygulamayı göremezsiniz. NetBeans bunu yapabilir, muhtemelen Eclipse, IntelliJ muhtemelen, vb. Jar yapısını doğrudan IDE içinden tarayabilirsiniz.

Sadece içerik

İçeriği görüntüleme gibi herhangi bir şey için şunları kullanabilirsiniz:

  • jar tvf jarfile.jar
  • winzip veya herhangi bir zip aracı

Kaynak kodu

Kaynak koduna erişmek için JAD gibi bir kod çözücü veya ön uçlarından biri veya başka bir kod çözücü kullanabilirsiniz. Kod gizlenmişse, ...



7
jar -tvf file_name.jar

yukarıda yalnızca dosyaların adları yazdırılır .

Dosyaların içeriğini görüntülemek için , bir klasördeki dosyaları şu şekilde ayıklayabilirsiniz :

jar -xvf file_name.jar

bu jar dosyasını açıp içeriği çalıştırdığınız dizine koyacaktır.

Veya Windows'ta .jar dosyasını .zip olarak yeniden adlandırın ve ardından jar dosyasının içeriğini ayıklayıp görüntülemek için sıkıştırmayı açabilirsiniz. Kavanoz dahili olarak bir zip dosyası olduğu için.


6

WinRar kullanın . Klasör yapısını sizin için sağlam bir şekilde açacaktır. Ayrıca yolları korurken arşiv içi düzenlemeye de izin verir.

Afterall, bir JAR dosyası sadece ZIP arşivi.


6

İçinde ne olduğunu görmek istiyorsanız, aşağıdaki ilk seçenek olarak yeniden adlandırın.

  1. F2 & Rename to jarfile.zip // Herhangi bir sıkıştırmayı açma ...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar


5

Doğru anlıyorsam, sadece sınıfları değil, aynı zamanda yöntemleri, özellikleri ve benzerlerini de görmek istersiniz. Bunu yapabileceğimi bildiğim tek araç Eclipse - proje sınıfyoluna bir kavanoz eklerseniz, her zamanki paket gezginini kullanarak sınıflarına yöntem ve özelliklerle göz atabilirsiniz.

Her neyse, bu iyi bir bağımsız Java aracı için iyi bir fikir


Kavanozun sadece "libs" değil, "Başvurulan kütüphaneler" klasöründe olması gerektiğini unutmayın. Apache Commons kütüphanesi durumunda, source.jar dosyasına göz atmazsınız, Eclipse sorduğunda orijinal belgeye göz atarsınız ve kaynağı eklersiniz.
Noumenon

4

Jad klunky ve artık korunmuyor. Kaygan bir arayüz ve yeni dil özellikleri desteği olan "Java Decompiler" e geçtim .

Kullandığım her decompiler, başarılı bir şekilde decompile etmeyen koda gidiyor. Bunlar için, standart JDK aracı olan javap tarafından üretilen demonte Java bayt kodunu anlamaya yardımcı olur .


3

Bir jar dosyası sadece bir zip dosyasıdır, bu yüzden onu açtığınızda (en sevdiğiniz unzipping yardımcı programınızla), içindeki tüm dosyaları alırsınız.

Yöntemleri görmek için sınıf dosyalarının içine bakmak isterseniz, bunun için bir araca ihtiyacınız olacaktır. PhiLho'nun belirttiği gibi, Eclipse bunu yapabilir (varsayılan olarak) ve çoğu Java IDE'nin bunu yapabileceğini düşünüyorum.


3

Eclipse 3.4'te

  1. Söz konusu jar dosyasını bir Java projesine sürükleyin. Jar dosyasının bir kopyası görüntülenir.
  2. Jar dosyasına sağ tıklayın ve "Yol Oluştur" -> "Yol Oluştur'a Ekle" yi seçin.
  3. Jar dosyası "Başvurulan Kitaplıklar" düğümüne taşınır ve burada Proje Gezgini bölmesinde açılabilir ve gezilebilir.

Kaynak kodunu görmek de sorun teşkil ediyorsa, yeni bir soru açın.

Jar dosyası düzeyinde gezinme için (zip dosyası olarak) Çok iyi çalışan 7zip kullanıyorum ve sorun giderme için harika girişleri görmeye ve düzenlemeye izin veriyorum.


3

Bunu yapmanın bir yolu perspektifi "Paket gezgini" nde açmaktır. Bunu yaparken kavanozunuzun yapısını sınıf detayları ile görebilirsiniz. Bunun için paket gezginini kullanarak projenizdeki kütüphane klasörünü kontrol edin.

Pencere >> Görünümü Göster >> Diğer >> Java >> Paket Gezgini

Başka bir yol, JarPlug'u bir tutulma eklentisi olarak kullanabilirsiniz. Bu tutulma / kaynak kaynağında çalışır

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


3

Windows'daysanız ve powershell kullanıyorsanız ve bir kavanozda bir dosya arıyorsanız şunları yapabilirsiniz:

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

2

Bu günlerde çoğu dekompresyon yardımcı programıyla açabilirsiniz, ardından kaynağı görüntülemek istiyorsanız DJ Java Decompiler gibi bir şey elde edebilirsiniz.



2

Benim gereksinimim kavanozun içinde bir dosya içeriğini (bir özellik dosyası gibi), aslında kavanoz çıkarmadan görüntülemekti. Biri benim gibi bu konuya ulaşmışsa, şu komutu deneyin -

unzip -p myjar.jar myfile.txt

Bu benim için iyi çalıştı!



1

JAR Tarayıcısını tercih ederim , birden fazla JAR'a göz atabileceğiniz ve aynı anda birden fazla JAR'da belirli bir sınıfı arayabileceğiniz basit bir arayüze sahiptir.


1

Eclipse 3.4 JDT

Bu en hızlı yol değildir, çünkü önce tutulması gereken yere sürüklemeniz gerekir. Ancak, decompile etkin olsa bile, tam java sınıfı göz atma işlemine sahip olacaksınız.


1

Windows'ta varsayılan eylemi "WinZip ile aç" olarak ayarladım. Bu, JAR'ları arşiv olarak yönetmeyi kolaylaştırır. Hatta elle dosya ekleyebilir / kaldırabilirsiniz.


1

Bu Jar Explorer yeterince iyi.
Üç decompiler tipini destekler: JD, Procyon ve Fernflower.
Herhangi bir java arşivinde dosya ve kopyaların aranmasına izin verir.
Ayrıca kullanıcı jar ile D&D dosyalarını değiştirebilir ve bazı sınıf dışı dosyaları düzenleyebilir. resim açıklamasını buraya girin resim açıklamasını buraya girin


Lütfen cevap olarak sadece bir araç veya kütüphane yayınlamayın. En azından sorunun cevabın kendisinde nasıl çözdüğünü göster .
Das_Geek


0

IDE'niz de bunu desteklemelidir. Benim IDE (SlickeEdit) buna "etiket kütüphanesi" diyor. Jar dosyası için bir etiket kitaplığı eklemeniz yeterlidir; sınıflara ve yöntemlere hiyerarşik bir şekilde göz atabilirsiniz.






Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.