การแตกไฟล์. jar ด้วยบรรทัดคำสั่ง


คำตอบ:


151

จากเอกสาร :

ในการแตกไฟล์จากไฟล์ jar ให้ใช้xใน:

C:\Java> jar xf myFile.jar

หากต้องการแยกเฉพาะไฟล์บางไฟล์จากไฟล์ jar ให้ระบุชื่อไฟล์:

C:\Java> jar xf myFile.jar foo bar

โฟลเดอร์ที่jarอาจไม่C:\Javaเหมาะสำหรับคุณในพาร์ติชัน Windows ของฉันคือ:

C:\Program Files (x86)\Java\jdk[some_version_here]\bin

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

แก้ไข:นี่คือบทความอื่นที่เน้นเฉพาะการแยก JARs: http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html


ตกลงเมื่อฉันทำคำสั่ง jar xf ... ฉันได้รับข้อผิดพลาด: ไม่รู้จัก 'jar' เป็นคำสั่งภายในหรือภายนอกโปรแกรมที่ใช้งานได้หรือไฟล์แบตช์ ฉันจะแก้ไขปัญหานี้ได้อย่างไร
Bobby C

1
@BobbyC: ระบุเส้นทางแบบเต็มjar.exeหรือเรียกใช้จากภายในโฟลเดอร์
AusCBloke

ขอบคุณทุกอย่างเรียบร้อยดี!
Bobby C

2
java.io.IOException: META-INF: ไม่สามารถสร้างไดเร็กทอรีที่ sun.tools.jar.Main.extractFile (Main.java:928) ที่ sun.tools.jar.Main.extract (Main.java:852) ที่ดวงอาทิตย์ .tools.jar.Main.run (Main.java:242) ที่ sun.tools.jar.Main.main (Main.java:1149) จะลบข้อผิดพลาดนี้ได้อย่างไร
AnilPatel

1
@AnilPatel ฉันแก้ไขสิ่งนี้ด้วยการเรียกใช้พรอมต์คำสั่งในฐานะผู้ดูแลระบบ (คลิกขวา "run as administrator")
jessieloo

35

โปรดทราบว่าไฟล์ jar เป็นไฟล์ Zip และเครื่องมือ Zip ใด ๆ (เช่น 7-Zip) สามารถดูภายใน jar ได้


6
โปรดดูที่นี่นี่คือสิ่งที่คุณต้องการทั้งหมด
อาลี

29

ใน Ubuntu:

unzip file.jar -d dir_name_where_extracting


2
มีประโยชน์สำหรับระบบที่ไม่มีjarคำสั่ง! ทำงานได้โดยไม่มีปัญหาใด ๆ บน CentOS 5.7
djthoms

8

คุณสามารถใช้คำสั่งต่อไปนี้: jar xf rt.jar

โดยXย่อมาจากการแตกไฟล์และfจะเป็นอ็อพชันใด ๆ ที่ระบุว่าไฟล์ JAR ที่จะแตกไฟล์นั้นถูกระบุไว้ในบรรทัดรับคำสั่งแทนที่จะใช้ stdin


2

Java มีคลาสสำหรับไฟล์ zip โดยเฉพาะและอีกหนึ่งคลาสสำหรับไฟล์ Jar โดยเฉพาะ

java.util.jar.JarOutputStream
java.util.jar.JarInputStream

โดยใช้สิ่งที่คุณทำได้บนคำสั่งจากคอนโซลโดยใช้สแกนเนอร์ตั้งค่าเป็น system.in

Scanner console = new Scanner(System.in);
String input = console.nextLine();

จากนั้นรับส่วนประกอบทั้งหมดและเขียนเป็นไฟล์

JarEntry JE = null;
while((JE = getNextJarEntry()) != null)
{
    //do stuff with JE
}

คุณยังสามารถใช้ java.util.zip.ZipInputStream แทนได้เนื่องจากการดูไฟล์ JAR อยู่ในรูปแบบเดียวกับไฟล์ ZIP ZipInputStream จะสามารถจัดการไฟล์ Jar ได้ในความเป็นจริงแล้ว JarInputStream ขยาย ZipInputStream

อีกทางเลือกหนึ่งคือแทน getNextJarEntry เพื่อใช้ getNextEntry


2

jar xf myFile.jar
เปลี่ยน myFile เป็นชื่อไฟล์ของคุณ
สิ่งนี้จะบันทึกเนื้อหาในโฟลเดอร์ปัจจุบันของไฟล์. jar
ที่ควรทำ :)


0

ให้ไฟล์ชื่อ Me.Jar:

  1. ไปที่ cmd
  2. กด Enter
  3. ใช้jarคำสั่งJava - ฉันใช้ jdk1.8.0_31 ดังนั้นฉันจะพิมพ์

    C: \ Program Files (x86) \ Java \ jdk1.8.0_31 \ bin \ jar xf me.jar

นั่นควรแตกไฟล์ไปที่โฟลเดอร์ bin มองหาไฟล์. class ในกรณีของฉัน Me.jar ของฉันมี Valentine.class

พิมพ์java Valentineและกด Enter จากนั้นไฟล์ข้อความของคุณจะเปิดขึ้น


-3

ในการแตก jar ลงในโฟลเดอร์ที่ระบุให้ใช้คำสั่งนี้ผ่าน command prompt

C:\Java> jar xf myFile.jar -C "C:\tempfolder"

7
วิธีนี้ใช้ไม่ได้ -Cสามารถใช้ได้เฉพาะเมื่อสร้างไฟล์ jar เท่านั้น
unwichtich

@unwichtich ในกรณีนี้มีวิธีระบุโฟลเดอร์ปลายทางหรือไม่?
สาย

2
บนระบบ Linux คุณสามารถใช้ได้unzip file.jar -d dir_name_where_extractingบน Windows คุณต้องคัดลอก / ย้าย JAR ของคุณไปยังโฟลเดอร์ปลายทางจากนั้นแตกไฟล์ที่นั่น ...
unwichtich
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.