Xem nội dung của tệp .jar


226

Điều gì sẽ là cách dễ nhất để xem các lớp, phương thức, thuộc tính, vv trong một tệp jar? Tôi đang tìm kiếm thứ gì đó tương đương với Lutz Roeder .NET Reflector rất hữu ích - cho Java


12
Tại sao bạn không chấp nhận câu trả lời?
Sanghyun Lee

4
@HughLee Chàng trai hỏi điều này 8 năm trước . Đó là lý do tại sao cần phải có sự chấp nhận tự động sau khi câu trả lời đạt 100 lần nâng cấp IMO
Kolob Canyon

@KolobCanyon đúng, nhưng câu trả lời được xếp hạng hàng đầu của họ đã được gửi cùng ngày với câu hỏi này
Pranav A.

1
Câu trả lời đến từ việc https://superuser.com/a/808938/1045397 Bạn có thể làm điều đó với vim vim file_name.jar
byte mamba

Câu trả lời:


280

Sử dụng JDK, jar -tfsẽ liệt kê các tệp trong tệp jar. javapsẽ cung cấp cho bạn thêm chi tiết từ một tập tin lớp cụ thể.


3
@salvob Bạn không cần gạch nối như sau khi tarcó các tùy chọn bắt buộc.
Tom Hawtin - tackline

2
FYI, Bạn có thể cần thêm C:\Program Files\Java\jdk<version>\binvào biến môi trường PATH của hệ thống hoặc người dùng trước khi bạn có thể sử dụng jarlàm lệnh hệ thống. (Trong đó <phiên bản> là số bản dựng phiên bản jdk của bạn. Hãy kiểm tra số đó C:\Program Files\Java)
Tezra

1
ví dụ javap: javap-classpath test.jar com.yourpackage.HelloWorld
mPrinC

để xem nội dung của một tệp không phải là lớp (như tệp kê khai), bạn muốn làm một cái gì đó như thế này: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC

55

Tôi thường mở chúng bằng 7-Zip ... Nó ít nhất cho phép xem các gói và lớp và tài nguyên.
Nếu tôi cần xem các phương thức hoặc các trường, tôi sẽ sử dụng Jad nhưng tất nhiên, tốt hơn là nên dựa vào (tốt) JavaDoc ...

Bây giờ, ở đâu đó trên SO đã đề cập đến một số trình cắm thêm Eclipse, để tìm trong đó tệp jar được đặt ở đâu, có lẽ chúng có thể làm được nhiều hơn (ví dụ: những gì bạn yêu cầu).

[EDIT] Tham chiếu đến chủ đề SO. Không phải những gì được hỏi, nhưng bằng cách nào đó có liên quan, do đó hữu ích: Java: Làm thế nào để tôi biết tệp jar nào được sử dụng cho một tên lớp?


Liên kết đến trang web Jad đã bị xóa khi URL được đỗ. Nó vẫn có thể được tìm thấy tại web.archive.org/web/20080106184313/http://www.kpdus.com/. Nhưng dù sao thì Jad đã lỗi thời.
PhiLho

35

Những gì tôi sử dụng cá nhân là JD-GUI. Nó là một 'trình dịch ngược' miễn phí, vì nó cho phép bạn xem mã nguồn, các lớp và các đối tượng trong các lớp, cũng như xem cấu trúc tệp trong menu cây ở bên trái. Tuy nhiên, nó không cho phép bạn sửa đổi các lớp trực tiếp.

Trang web của JD-GUI: http://jd.benow.ca/


Điều này hoạt động đa nền tảng trong khi 7-Zip được đề cập trong một câu trả lời khác là dành riêng cho Windows.
Brad Cupit

Tôi đã sử dụng Archive Utility trên OS X, hoạt động tốt. Hầu hết (un) tiện ích zip nên hoạt động, bất kể nền tảng.
Greenonline

23

Trong trường hợp ai đó chưa biết điều này, tệp JAR chỉ là tệp ZIP chứa các lớp, tài nguyên, v.v. và một số siêu dữ liệu của chương trình. Bạn có thể trích xuất một cái để xem nó kết hợp với nhau như thế nào.

Do đó tôi đang sử dụng unziplệnh rất dễ nhớ và sử dụng.

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

Ví dụ: nếu bạn có một tệp jar có tên test.jarthìunzip -l test.jar sẽ liệt kê tất cả nội dung của tệp jar.

Mặc dù tất cả các câu trả lời khác đều tuyệt vời, nhưng trong hầu hết chúng, bạn sẽ phải sử dụng một số phần mềm như 7 ziphoặc JDKhoặc một số công cụ nhật thực khác trong khi điều này không yêu cầu bạn phải có bất kỳ s / w lớn nào và nó được mặc định trong linux và mac vì vậy nó rất nhẹ và tiện dụng để sử dụng .

Bạn cũng có thể sử dụng zipinfo <your jar file>. nếu hệ điều hành của bạn hỗ trợ này.


1
@Boop cảm ơn vì lời đề nghị. sẽ thêm nó vào câu trả lời của tôi
Opster Elaticsearch Ninja

1
Nếu trình thám hiểm tệp hỗ trợ zip, đổi tên jar thành .zip cũng hoạt động (ví dụ: trên windows)
Rhayene

16

Tên phương thức, trường, v.v.

Bằng cách thêm một jar vào một dự án trong IDE, bạn thường có thể thấy các phương thức và tên trường, nhưng không phải là triển khai chi tiết. NetBeans có thể làm điều đó, có lẽ Eclipse, IntelliJ, v.v. Bạn có thể duyệt cấu trúc jar trực tiếp trong IDE.

Chỉ là nội dung

Đối với mọi thứ như xem nội dung, bạn có thể sử dụng:

  • jar tvf jarfile.jar
  • winzip hoặc bất kỳ công cụ zip nào

Mã nguồn

Để truy cập mã nguồn, bạn sẽ sử dụng một trình dịch ngược như JAD hoặc một trong các frontend của nó hoặc một trình dịch ngược khác. Nếu mã bị xáo trộn, thì ...



7
jar -tvf file_name.jar

ở trên sẽ chỉ in tên của các tập tin .

Để xem nội dung của tệp, bạn có thể trích xuất các tệp trong một thư mục bằng cách:

jar -xvf file_name.jar

điều này sẽ giải nén tập tin jar và đặt nội dung trong cùng thư mục nơi bạn đang chạy này.

Hoặc trong Windows đổi tên tệp .jar thành .zip và sau đó bạn có thể giải nén để giải nén & xem nội dung của tệp jar. Như jar là nội bộ một tập tin zip.


6

Sử dụng WinRar . Nó sẽ mở cấu trúc thư mục cho bạn một cách nguyên vẹn. Cũng cho phép chỉnh sửa trong kho lưu trữ, trong khi bảo tồn đường dẫn.

Sau đó, một tệp JAR chỉ là một tệp lưu trữ ZIP.


6

Nếu bạn muốn xem những gì bên trong, chỉ cần đổi tên là tùy chọn đầu tiên bên dưới ..

  1. F2 & Rename to jarfile.zip // Sử dụng bất kỳ unzipper ...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar


5

Nếu tôi hiểu chính xác, bạn muốn xem không chỉ các lớp mà cả các phương thức, thuộc tính, v.v. Công cụ duy nhất tôi biết có thể làm điều đó là Eclipse - nếu bạn thêm một jar vào đường dẫn lớp dự án, bạn sẽ có thể duyệt các lớp của nó với các phương thức và thuộc tính bằng cách sử dụng trình thám hiểm gói thông thường.

Dù sao, đây là một ý tưởng tốt cho một công cụ Java độc lập tốt


Lưu ý rằng jar cần phải nằm trong thư mục "Thư viện tham chiếu", không chỉ là "libs". Và trong trường hợp thư viện Apache Commons, bạn không duyệt source.jar, bạn duyệt bản gốc và sau đó đính kèm nguồn khi Eclipse yêu cầu.
Noumenon

4

Jad là klunky và không còn được duy trì. Tôi đã chuyển sang "Trình dịch ngược Java" , có giao diện người dùng mượt mà và hỗ trợ cho các tính năng ngôn ngữ mới.

Mặc dù vậy, mọi trình dịch ngược mà tôi đã sử dụng đều chạy vào mã mà nó không dịch ngược thành công. Đối với những người này, nó giúp hiểu được mã byte Java đã phân tách được tạo bởi công cụ JDK tiêu chuẩn, javap .


3

Chà, một tệp jar chỉ là một tệp zip, vì vậy nếu bạn giải nén nó (với tiện ích giải nén yêu thích của bạn), bạn sẽ nhận được tất cả các tệp bên trong.

Nếu bạn muốn xem bên trong các tệp lớp để xem các phương thức, bạn sẽ cần một công cụ cho việc đó. Như PhiLho đã đề cập, Eclipse có thể làm điều đó (theo mặc định) và tôi nghĩ rằng hầu hết các IDE Java đều có khả năng đó.


3

Trong Eclipse 3,4 làm

  1. Kéo tệp jar trong câu hỏi vào một dự án Java. Một bản sao của tệp jar xuất hiện.
  2. Nhấp chuột phải vào tệp jar và chọn "Đường dẫn xây dựng" -> "Thêm vào đường dẫn xây dựng".
  3. Tệp Jar được chuyển đến nút "Thư viện tham chiếu", tại đó tệp có thể được mở và điều hướng trong ngăn Project Explorer.

Nếu thấy mã nguồn cũng là một vấn đề, hãy mở một câu hỏi mới.

Để điều hướng ở cấp độ tệp Jar (dưới dạng tệp zip), tôi sử dụng 7zip, hoạt động rất tốt và cho phép xem và chỉnh sửa các mục rất phù hợp để xử lý sự cố.


3

Một cách để làm điều này là mở phối cảnh trong "Gói thám hiểm". Làm điều này bạn có thể thấy cấu trúc của bình của bạn với các chi tiết lớp. Đối với điều này kiểm tra thư mục thư viện trong dự án của bạn bằng cách sử dụng gói explorer.

Cửa sổ >> Hiển thị Chế độ xem >> Khác >> Java >> Gói Explorer

Một cách khác là, bạn có thể sử dụng JarPlug làm plugin nhật thực. Điều này hoạt động trong nhật thực / suối nguồn

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


3

Nếu bạn đang ở trong windows và sử dụng powershell và bạn đang tìm kiếm một tệp trong một jar bạn có thể làm:

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

2

Bạn có thể mở chúng với hầu hết các tiện ích giải nén trong những ngày này, sau đó chỉ cần lấy một cái gì đó như DJ Java Decompiler nếu bạn muốn xem nguồn.



2

Yêu cầu của tôi là xem nội dung của tệp (như tệp thuộc tính) bên trong tệp mà không thực sự trích xuất tệp. Nếu bất cứ ai đạt được chủ đề này giống như tôi, hãy thử lệnh này -

unzip -p myjar.jar myfile.txt

Điều này làm việc tốt cho tôi!



1

Tôi thích Trình duyệt JAR , nó có giao diện đơn giản, nơi bạn có thể duyệt nhiều JAR và tìm kiếm một lớp cụ thể trên nhiều JAR cùng một lúc.


1

Nhật ký 3,4 JDT

Đây không phải là cách nhanh nhất vì bạn phải kéo nó vào nhật thực trước. Nhưng bạn sẽ có trình duyệt lớp java đầy đủ, ngay cả khi đã dịch ngược.


1

Tôi đã đặt hành động mặc định trong các cửa sổ thành "Mở bằng WinZip". Điều này giúp dễ dàng quản lý JAR làm tài liệu lưu trữ. Bạn thậm chí có thể thêm / xóa các tập tin bằng tay.


1

Đây Jar Explorer là đủ tốt.
Hỗ trợ ba loại dịch ngược: JD, Procyon và Fernflower.
Cho phép tìm kiếm các tập tin và trùng lặp trong bất kỳ kho lưu trữ java.
Ngoài ra người dùng có thể sửa đổi jar bằng các tệp D & D và chỉnh sửa một số tệp không phải là lớp. nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


Xin đừng chỉ đăng một số công cụ hoặc thư viện như một câu trả lời. Ít nhất là chứng minh làm thế nào nó giải quyết vấn đề trong chính câu trả lời.
Das_Geek


0

IDE của bạn cũng nên hỗ trợ này. IDE của tôi (DilkeEdit) gọi nó là "thư viện thẻ." Chỉ cần thêm một thư viện thẻ cho tệp jar và bạn sẽ có thể duyệt các lớp và phương thức theo cách phân cấp.






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.