2016-09-19 11 views
7

Tôi rất bối rối. Tôi đã tải xuống tệp * .jar dưới dạng một phần mềm. Vì vậy, tôi muốn trích xuất mã nguồn để nhìn vào nóCách trích xuất mã nguồn từ tệp * .jar trên máy Mac?

tôi đã sử dụng lệnh jar xf filename.jar

mà trở lại thêm hai *.jar tập tin và một file *.class. Tôi vẫn không thể mở chúng trong terminal với các trình soạn thảo văn bản chuẩn.

Có lẽ đây không phải là phần mềm nguồn mở? Có cách nào khác để xem những gì đã được thực hiện ở đây không?

+2

Một .class là mã đối tượng Java, * không * mã nguồn. Một bình không cần chứa bất kỳ mã nguồn nào. –

+0

@JamesKPolk Tôi hiểu rồi. Không có cách nào để xem họ viết mã gì? – ShanZhengYang

+0

Có vẻ như bạn đã tải xuống thư viện chứ không phải src, hãy sử dụng jar tf filename.jar để xem nội dung – chifer

Trả lời

9

Run "java -jar fernflower.jar -dgs=true JarToDecompile.jar DecompiledJar"

Đây là những gì Intelli-J & Android-Studio Decompiler làm .

Lưu ý: Fernflower chiết xuất các tệp .java thành tệp .jar. Bạn có thể giải nén tệp jar dưới dạng tệp zip thông thường (nếu phiên bản Archive Utility trên OSX của bạn cho phép nó - Nó không làm điều đó cho tôi trên OSX Sierra nhưng hoạt động trên El Capitan) HOẶC bạn có thể làm jar xf DecompiledJar và nó sẽ giải nén nó.

Ví dụ (tất cả trong một lệnh - nhiều lệnh ngăn cách bởi &&):

tập tin

java -jar fernflower.jar -dgs=true JarToDecompile.jar DecompiledJar && cd DecompiledJar && jar xf DecompiledJar.jar && cd ../

+0

'java -jar fernflower.jar -dgs = true JarToDecompile .jar DecompiledJar' chỉ cho tôi một thư mục con với cùng một tệp jar trong câu hỏi – ShanZhengYang

+1

Mở tệp bạn có trong thư mục con. Nó chỉ là một tệp nén có chứa một loạt các tệp nguồn Java. – Brandon

+0

Tôi có nên đổi tên nó thành một tệp zip và giải nén nó không? – ShanZhengYang

2

Tệp jar có thể chứa mã nguồn, nhưng thường chỉ chứa các tệp lớp. Các tệp lớp thường là để thực thi, không phải để trích xuất nguồn.

Bạn có thể dịch ngược các tệp lớp thành mã nguồn, nhưng mã được biên dịch sẽ không gần như hữu ích như mã nguồn gốc.

Nếu đó là nguồn mở, hãy quay lại trang web nơi bạn đã tải xuống tệp jar và tìm nguồn. Nó có thể nằm trong các tệp Zip sẽ được tải xuống, nó có thể nằm trong các tệp jar được tải xuống và có thể trong một số loại kho lưu trữ, như Git, bạn có thể kết nối với phần mềm phù hợp.

Các vấn đề liên quan