Đ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
Đ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
Câu trả lời:
Sử dụng JDK, jar -tf
sẽ liệt kê các tệp trong tệp jar. javap
sẽ cung cấp cho bạn thêm chi tiết từ một tập tin lớp cụ thể.
tar
có các tùy chọn bắt buộc.
C:\Program Files\Java\jdk<version>\bin
và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 jar
là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
)
jar tf test.jar | grep MANIFEST
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?
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/
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 unzip
lệ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.jar
thì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 zip
hoặc JDK
hoặ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.
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.
Đối với mọi thứ như xem nội dung, bạn có thể sử dụng:
jar tvf jarfile.jar
Để 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ì ...
Mở rộng câu trả lời của Tom Hawtin, bạn có thể dẫn danh sách để lọc ra các lớp hoặc tệp mong muốn:
jar tf my-fat-jar-file.jar | grep filename
Điều này sẽ hoạt động trên bash / zsh và similars, hoặc emacs 'eshell.
Thông tin bổ sung: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html
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.
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.
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 ..
F2 & Rename to jarfile.zip
// Sử dụng bất kỳ unzipper ...
jar tvf jarfile.jar
jar tf jarfile.jar
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
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 .
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 đó.
Trong Eclipse 3,4 làm
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ố.
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
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.
Bndtools cung cấp một trình xem JAR miễn phí cho Eclipse.
Thêm trang cập nhật Eclipse và chỉ cài đặt trình xem.
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!
Tôi nghĩ Java Decomplier là tùy chọn tốt nhất của bạn mà bạn có thể tải xuống từ đây: http://jd.benow.ca/
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.
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.
Đâ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.
Tôi sử dụng JarExplorer hoặc JarVisualizer .
Bạn có thể thử JarNavigator để xem và tìm kiếm nội dung của tệp jar.
Ngoài ra, bạn có thể sử dụng Luyten - Một Gui trình dịch ngược Java mã nguồn mở