Giải nén tệp .jar bằng dòng lệnh


115

Tôi đang cố gắng giải nén các tệp từ tệp .jar. Làm cách nào để làm điều đó bằng dòng lệnh?

Tôi đang chạy Windows 7

Câu trả lời:


146

Từ các tài liệu :

Để giải nén các tệp từ một tệp jar, hãy sử dụng x, như trong:

C:\Java> jar xf myFile.jar

Để chỉ trích xuất một số tệp nhất định từ tệp jar, hãy cung cấp tên tệp của chúng:

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

Thư mục jarcó thể không C:\Javadành cho bạn, trên phân vùng Windows của tôi, đó là:

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

Trừ khi vị trí của jarnằm trong biến môi trường đường dẫn của bạn, bạn sẽ phải chỉ định đường dẫn đầy đủ / chạy chương trình từ bên trong thư mục.

CHỈNH SỬA: Đây là một bài viết khác, đặc biệt tập trung vào giải nén các JAR: http://docs.oracle.com/javase/tutorial/deployment/jar/unpack.html


Được rồi, Khi tôi thực hiện lệnh jar xf ... đó, tôi gặp lỗi: 'jar' không được nhận dạng là lệnh nội bộ hoặc lệnh bên ngoài, chương trình có thể hoạt động hoặc tệp hàng loạt. Làm cách nào để sửa lỗi này?
Bobby C

1
@BobbyC: Chỉ định đường dẫn đầy đủ của jar.exehoặc chạy nó từ bên trong thư mục.
AusCBloke

Cảm ơn, mọi thứ đều ổn!
Bobby C

2
java.io.IOException: META-INF: không thể tạo thư mục tại sun.tools.jar.Main.extractFile (Main.java:928) tại sun.tools.jar.Main.extract (Main.java:852) tại sun .tools.jar.Main.run (Main.java:242) tại sun.tools.jar.Main.main (Main.java:1149) làm cách nào để loại bỏ lỗi này?
AnilPatel

1
@AnilPatel Tôi đã sửa lỗi này bằng cách chạy dấu nhắc lệnh với tư cách quản trị viên (nhấp chuột phải vào "chạy với tư cách quản trị viên")
jessieloo

34

Lưu ý rằng tệp jar là tệp Zip và bất kỳ công cụ Zip nào (chẳng hạn như 7-Zip) đều có thể nhìn vào bên trong jar.


6
Xin hãy nhìn vào đây, đây là những gì bạn cần.
Ali

28

Trong Ubuntu:

unzip file.jar -d dir_name_where_extracting


1
Hữu ích cho các hệ thống không có jarlệnh! Công trình mà không cần bất kỳ vấn đề trên CentOS 5.7
djthoms

8

Bạn có thể sử dụng lệnh sau: jar xf rt.jar

Where Xlà viết tắt của chiết xuất và fsẽ là bất kỳ tùy chọn nào cho biết tệp JAR mà tệp sẽ được trích xuất từ ​​đó được chỉ định trên dòng lệnh, thay vì thông qua stdin.


2

Java có một lớp dành riêng cho các tệp zip và một lớp đặc biệt hơn cho các tệp Jar.

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

sử dụng những thứ bạn có thể, theo lệnh từ bảng điều khiển, sử dụng máy quét được đặt thành system.in

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

sau đó lấy tất cả các thành phần và ghi chúng dưới dạng tệp.

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

Thay vào đó, bạn cũng có thể sử dụng java.util.zip.ZipInputStream, vì khi thấy tệp JAR có cùng định dạng với tệp ZIP, ZipInputStream sẽ có thể xử lý tệp Jar, trên thực tế JarInputStream thực sự mở rộng ZipInputStream.

một giải pháp thay thế cũng thay vì getNextJarEntry, để sử dụng getNextEntry


2

jar xf myFile.jar
thay đổi myFile thành tên tệp của bạn,
điều này sẽ lưu nội dung trong thư mục hiện tại của tệp .jar
nên làm :)


0

Đưa ra một tệp có tên Me.Jar:

  1. Đi tới cmd
  2. Nhấn Enter
  3. Sử dụng jarlệnh Java - Tôi đang sử dụng jdk1.8.0_31 nên tôi sẽ nhập

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

Điều đó sẽ giải nén tệp vào thùng thư mục. Tìm tệp .class trong trường hợp của tôi Me.jar của tôi có chứa Valentine.class

Loại java Valentinevà nhấn Enter và tập tin thông điệp của bạn sẽ được mở ra.


-3

Để giải nén jar vào thư mục được chỉ định, hãy sử dụng lệnh này qua dấu nhắc lệnh

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

7
Điều này không hiệu quả. -Cchỉ có thể được sử dụng khi tạo tệp jar.
unwichtich

@unwichtich Trong trường hợp đó, có cách nào để chỉ định thư mục đích không?
Dòng

2
Trên các hệ thống Linux, bạn có thể sử dụng unzip file.jar -d dir_name_where_extracting, trên Windows bạn phải sao chép / di chuyển JAR của bạn vào thư mục đích và sau đó giải nén nó ở đó ...
unwichtich
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.