การดูเนื้อหาของไฟล์. jar


226

อะไรจะเป็นวิธีที่ง่ายที่สุดในการดูคลาส, เมธอด, คุณสมบัติ, ฯลฯ ภายในไฟล์ jar? ฉันกำลังมองหาบางสิ่งที่เทียบเท่ากับLutz Roeder .NET Reflector ที่มีประโยชน์มาก- สำหรับ Java


12
ทำไมคุณไม่ยอมรับคำตอบล่ะ?
Sanghyun Lee

4
@HughLee ผู้ชายที่ถามนี้ถามว่า8 ปีที่ผ่านมา นั่นเป็นเหตุผลที่จะต้องมีการยอมรับโดยอัตโนมัติหลังจากที่คำตอบฮิต 100 upvotes IMO
Kolob Canyon

@KolobCanyon จริง แต่พวกเขาได้รับคำตอบที่ติดอันดับต้น ๆ ในวันเดียวกับที่ถูกถาม
Pranav A.

1
คำตอบมาจาก: https://superuser.com/a/808938/1045397คุณสามารถทำได้ด้วย vim vim file_name.jar
byte mamba

คำตอบ:


280

การใช้ JDK jar -tfจะแสดงรายการไฟล์ใน jar javapจะให้รายละเอียดเพิ่มเติมจากไฟล์คลาสเฉพาะ


3
@salvob คุณไม่ต้องการยัติภังค์ตามที่ต้องการหลังจากtarใช้ตัวเลือกที่จำเป็น
Tom Hawtin - tackline

2
FYI, คุณอาจต้องเพิ่มC:\Program Files\Java\jdk<version>\binตัวแปรสภาพแวดล้อม PATH ของระบบหรือผู้ใช้ของคุณก่อนที่คุณจะสามารถใช้jarเป็นคำสั่งระบบ (โดยที่ <version> เป็นหมายเลขสร้างเวอร์ชั่น jdk ของคุณตรวจสอบในC:\Program Files\Java)
Tezra

1
ตัวอย่าง javap: javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC

เพื่อดูเนื้อหาของไฟล์ที่ไม่ใช่คลาส (เช่นรายการ) คุณต้องการทำสิ่งนี้: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC

55

ฉันมักจะเปิดพวกเขาด้วย 7-Zip ... มันช่วยให้อย่างน้อยสามารถดูแพ็คเกจและคลาสและทรัพยากร
ฉันควรจะต้องดูวิธีการหรือสาขาฉันจะใช้ Jad แต่แน่นอนมันจะดีกว่าที่จะพึ่งพา (ดี) JavaDoc ...

ทีนี้มีบางคนใน SO ได้กล่าวถึงปลั๊กอิน Eclipse เพื่อค้นหาว่าไฟล์ jar อยู่ในคลาสใดบางทีพวกเขาสามารถทำอะไรได้มากกว่า (เช่นสิ่งที่คุณร้องขอ)

[แก้ไข] อ้างอิงถึงเธรด SO ไม่ใช่สิ่งที่ถูกถาม แต่มีความเกี่ยวข้องอย่างใดอย่างหนึ่งจึงมีประโยชน์: Java: ฉันจะรู้ได้อย่างไรว่าไฟล์ jar ใดที่จะใช้กำหนดชื่อคลาส


ลิงก์ไปยังไซต์ Jad ถูกลบออกเนื่องจากมีการจอด URL สามารถพบได้ที่web.archive.org/web/20080106184313/http://www.kpdus.com/แต่ Jad ล้าสมัยไปแล้วในวันนี้
PhiLho

35

สิ่งที่ฉันใช้เป็นการส่วนตัวคือ JD-GUI มันเป็น 'decompiler' ฟรีเนื่องจากช่วยให้คุณเห็นซอร์สโค้ดคลาสและวัตถุในคลาสรวมถึงดูโครงสร้างไฟล์ในเมนูทรีทางด้านซ้าย อย่างไรก็ตามมันไม่อนุญาตให้คุณแก้ไขคลาสโดยตรง

เว็บไซต์ของ JD-GUI: http://jd.benow.ca/


วิธีนี้ใช้งานข้ามแพลตฟอร์มได้ในขณะที่ 7-Zip ที่กล่าวถึงในคำตอบอื่นนั้นเป็น Windows เฉพาะ
Brad Cupit

ฉันใช้Archive Utilityบน OS X ทำงานได้ดี โปรแกรมอรรถประโยชน์ zip (un) ส่วนใหญ่ควรใช้งานได้ไม่ว่าจะใช้แพลตฟอร์มใด
Greenonline

23

ในกรณีที่มีคนไม่รู้จักสิ่งนี้ไฟล์ JAR เป็นเพียงไฟล์ ZIP ที่มีคลาสของโปรแกรมทรัพยากร ฯลฯ และข้อมูลเมตาบางส่วน คุณสามารถแยกไฟล์เพื่อดูว่ามันประกอบกันอย่างไร

ดังนั้นฉันใช้unzipคำสั่งที่ง่ายต่อการจดจำและใช้

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

ตัวอย่างเช่นหากคุณมีไฟล์ jar ที่มีชื่อtest.jarดังนั้นunzip -l test.jarจะแสดงรายการเนื้อหาทั้งหมดของไฟล์ jar

ในขณะที่คำตอบอื่น ๆ ทั้งหมดนั้นยอดเยี่ยม แต่โดยส่วนใหญ่คุณจะต้องใช้ซอฟต์แวร์บางอย่างเช่น7 zipหรือJDKเครื่องมือคราสอื่น ๆ ในขณะที่นี่ไม่ต้องการให้คุณมี s / w ขนาดใหญ่เหล่านี้และมาเป็นค่าเริ่มต้นใน linux และ Mac เพื่อให้มีน้ำหนักเบามากและมีประโยชน์ในการใช้งาน

zipinfo <your jar file>นอกจากนี้คุณยังสามารถใช้ หากระบบปฏิบัติการของคุณรองรับสิ่งนี้


1
@Boop ขอบคุณสำหรับคำแนะนำ จะเพิ่มเข้าไปในคำตอบของฉัน
Opster Elasticsearch Ninja

1
หากไฟล์ explorer รองรับ zip การเปลี่ยนชื่อ jar เป็น .zip ก็สามารถทำได้เช่นกัน (เช่นบน windows)
Rhayene

16

ชื่อวิธีการฟิลด์และอื่น ๆ

โดยการเพิ่ม jar เข้ากับโปรเจ็กต์ใน IDE โดยปกติแล้วคุณสามารถเห็นเมธอดและชื่อฟิลด์ แต่ไม่ใช่การใช้งานโดยละเอียด NetBeans สามารถทำได้ Eclipse อาจเป็นไปได้ว่า IntelliJ เป็นต้นคุณสามารถเรียกดูโครงสร้าง jar โดยตรงภายใน IDE

เพียงแค่เนื้อหา

สำหรับทุกสิ่งเช่นการดูเนื้อหาคุณสามารถใช้:

  • jar tvf jarfile.jar
  • winzip หรือเครื่องมือ zip ใด ๆ

รหัสแหล่งที่มา

ในการเข้าถึงซอร์สโค้ดคุณจะต้องใช้ตัวแยกสัญญาณเช่น JAD หรือส่วนหน้าหรือส่วนขยายอื่น หากรหัสงงงวยแล้ว ...


10

การขยายคำตอบของ Tom Hawtin คุณสามารถไพพ์รายชื่อเพื่อกรองคลาสหรือไฟล์ที่ต้องการ:

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

สิ่งนี้ควรใช้กับ bash / zsh และ similars หรือ emacs 'eshell

ข้อมูลเพิ่มเติม: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html


7
jar -tvf file_name.jar

ด้านบนจะพิมพ์ชื่อไฟล์เท่านั้น

หากต้องการดูเนื้อหาของไฟล์คุณสามารถแตกไฟล์ในโฟลเดอร์โดย:

jar -xvf file_name.jar

สิ่งนี้จะทำการคลายซิปไฟล์ jar และใส่เนื้อหาในไดเรกทอรีเดียวกันกับที่คุณใช้งานอยู่

หรือใน Windows เปลี่ยนชื่อไฟล์. jar เป็น. zip จากนั้นคุณสามารถคลายซิปเพื่อแตกและดูเนื้อหาของไฟล์ jar เนื่องจาก jar เป็นไฟล์ zip ภายใน


6

ใช้ WinRar มันจะเปิดโครงสร้างโฟลเดอร์สำหรับคุณในลักษณะเหมือนเดิม นอกจากนี้ยังช่วยให้การแก้ไข in-archive ในขณะที่รักษาเส้นทาง

หลังจากนั้นไฟล์ JAR จะเป็นไฟล์ ZIP เท่านั้น


6

หากคุณต้องการดูว่าอะไรอยู่ภายในเพียงแค่เปลี่ยนชื่อเป็นตัวเลือกแรกด้านล่าง ..

  1. F2 & Rename to jarfile.zip // ใช้ unzipper ใด ๆ ...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar


5

ถ้าฉันเข้าใจอย่างถูกต้องคุณต้องการดูคลาสไม่เพียง แต่ยังวิธีการคุณสมบัติและอื่น ๆ เครื่องมือเดียวที่ฉันรู้ว่าสามารถทำได้คือ Eclipse - ถ้าคุณเพิ่ม jar ใน project classpath คุณจะสามารถเรียกดูคลาสด้วยวิธีการและคุณสมบัติโดยใช้แพ็คเกจสำรวจปกติ

อย่างไรก็ตามนี่เป็นความคิดที่ดีสำหรับเครื่องมือ Java แบบสแตนด์อโลนที่ดี


โปรดทราบว่า jar จะต้องอยู่ในโฟลเดอร์ "อ้างอิงห้องสมุด" ไม่ใช่แค่ "libs" และในกรณีของไลบรารี Apache Commons คุณจะไม่เรียกดู source.jar คุณจะเรียกดูต้นฉบับแล้วแนบซอร์สเมื่อ Eclipse ถาม
Noumenon

4

Jad klunky และไม่ได้รับการบำรุงรักษาอีกต่อไป ฉันเปลี่ยนเป็น"Java Decompiler"ซึ่งมี UI ที่ลื่นไหลและรองรับคุณสมบัติภาษาใหม่

decompiler ทุกตัวที่ฉันใช้มันจะทำงานเป็นรหัส แต่มันก็ไม่สามารถถอดรหัสได้สำเร็จ สำหรับผู้ที่จะช่วยให้เข้าใจถอดชิ้นส่วนรหัสไบต์ Java ผลิตโดยมาตรฐานเครื่องมือ JDK, javap


3

ไฟล์ jar เป็นเพียงไฟล์ zip ดังนั้นหากคุณคลายซิป (ด้วยการคลายไฟล์ที่คุณโปรดปราน) คุณจะได้ไฟล์ทั้งหมดที่อยู่ภายใน

หากคุณต้องการดูไฟล์ในชั้นเรียนเพื่อดูวิธีการต่างๆคุณจะต้องใช้เครื่องมือสำหรับสิ่งนั้น ตามที่กล่าวไว้ใน PhiLho Eclipse สามารถทำสิ่งนั้นได้ (โดยค่าเริ่มต้น) และฉันคิดว่า Java IDE ส่วนใหญ่มีความสามารถในเรื่องนั้น


3

ใน Eclipse 3.4 ทำได้

  1. ลากไฟล์ jar ที่สงสัยไปยังโครงการ Java สำเนาของไฟล์ jar ปรากฏขึ้น
  2. คลิกขวาที่ไฟล์ jar แล้วเลือก "Build Path" -> "Add to Build Path"
  3. ไฟล์ Jar ถูกย้ายไปยังโหนด "ไลบรารีที่อ้างอิง" ซึ่งสามารถเปิดและนำทางได้ในบานหน้าต่าง Project Explorer

หากการเห็นซอร์สโค้ดก็เป็นปัญหาด้วยเปิดคำถามใหม่

สำหรับการนำทางในระดับไฟล์ Jar (เป็นไฟล์ zip) ฉันใช้ 7zip ซึ่งทำงานได้ดีมากและอนุญาตให้ดูและแก้ไขรายการที่ยอดเยี่ยมสำหรับการแก้ไขปัญหา


3

วิธีหนึ่งในการทำเช่นนี้คือการเปิดมุมมองใน "แพ็คเกจสำรวจ" การทำเช่นนี้คุณจะเห็นโครงสร้างของขวดของคุณพร้อมรายละเอียดของคลาส สำหรับการตรวจสอบโฟลเดอร์ไลบรารีในโครงการของคุณโดยใช้ package explorer

หน้าต่าง >> แสดงมุมมอง >> อื่น ๆ >> Java >> Package Explorer

อีกวิธีคือคุณสามารถใช้ JarPlug เป็นปลั๊กอิน eclipse สิ่งนี้ใช้ได้ใน eclipse / springsource

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


3

หากคุณอยู่ใน windows และใช้ powershell และคุณกำลังมองหาไฟล์ในโถที่คุณสามารถทำได้:

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

2

คุณสามารถเปิดได้ด้วยยูทิลิตี้การคลายการบีบอัดส่วนใหญ่ในวันนี้จากนั้นรับของอย่างDJ Java Decompilerถ้าคุณต้องการดูซอร์ส



2

ความต้องการของฉันคือการดูเนื้อหาของไฟล์ (เช่นไฟล์คุณสมบัติ) ภายใน jar โดยไม่ต้องแตกไฟล์ jar จริงๆ หากใครมาถึงหัวข้อนี้เหมือนฉันลองคำสั่งนี้ -

unzip -p myjar.jar myfile.txt

นี้ทำงานได้ดีสำหรับฉัน!



1

ฉันชอบเบราว์เซอร์ JARแต่ก็มีอินเตอร์เฟซที่เรียบง่ายซึ่งคุณสามารถเรียกดูJARหลาย ๆ อันและค้นหาคลาสที่เจาะจงผ่านJARหลาย ๆ ตัวพร้อมกันได้


1

Eclipse 3.4 JDT

มันไม่ใช่วิธีที่เร็วที่สุดเพราะคุณต้องลากมันเข้าไปใน eclipse ของคุณก่อน แต่คุณจะมีการเรียกดูคลาส Java แบบเต็มแม้จะเปิดใช้งานการถอดรหัสก็ตาม


1

ฉันได้ตั้งค่าการกระทำเริ่มต้นใน windows เป็น "Open with WinZip" สิ่งนี้ทำให้การจัดการ JAR เป็นเรื่องง่าย คุณสามารถเพิ่ม / ลบไฟล์ได้ด้วยตนเอง


1

นี้Jar Explorer ที่เป็นที่ดีพอ
รองรับตัวถอดรหัสสามประเภทคือ JD, Procyon และ Fernflower
อนุญาตให้ค้นหาไฟล์และทำซ้ำในไฟล์เก็บถาวร java ใด ๆ
ผู้ใช้ยังสามารถแก้ไขไฟล์ jar ด้วยไฟล์ D&D และแก้ไขไฟล์ที่ไม่ใช่คลาสได้ ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่


โปรดอย่าเพิ่งโพสต์เครื่องมือหรือห้องสมุดเพื่อเป็นคำตอบ อย่างน้อยก็แสดงให้เห็นว่ามันแก้ปัญหาในคำตอบของตัวเอง
Das_Geek


0

IDE ของคุณควรสนับสนุนสิ่งนี้ IDE ของฉัน (SlickeEdit) เรียกมันว่า "ห้องสมุดแท็ก" เพียงเพิ่มไลบรารีแท็กสำหรับไฟล์ jar และคุณควรจะสามารถเรียกดูคลาสและวิธีการต่างๆตามลำดับชั้น






โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.