Trích xuất mã nguồn từ tệp .jar


172

Có cách nào để trích xuất mã nguồn từ tệp .jar thực thi (Java ME) không?


3
Nhưng lưu ý rằng việc làm này có thể là bất hợp pháp tùy thuộc vào việc bạn có sở hữu bản quyền đối với bình, quốc gia bạn sống và mục đích của bạn để thực hiện hay không.
Richard

2
Nếu nó là nguồn mở, hãy lấy nguồn từ nhà phát triển. Mặt khác "Mọi sự tuân thủ với EULA sẽ được đánh giá cao".
Andrew Thompson

Kiểm tra dịch ngược procyon. Tải về jar của nó để dịch ngược các tệp jar. Tôi đã đưa ra các bước dưới đây
nitin angadi

Câu trả lời:


146

Sử dụng GUI GUI . Mở ứng dụng, kéo và thả tệp JAR của bạn vào đó.


6
Có cách nào để lấy mã nguồn từ .jar mà không cần GUI GUI không?
Zulqurnain Jutt 7/10/2016

@ZulqurnainJutt sử dụng như được đề cập trong câu trả lời của @ elachancejar xf filename.jar
Arvind Sridharan

46

Bạn có thể trích xuất một tệp jar bằng lệnh:

jar xf filename.jar

Tài liệu tham khảo: Tài liệu JAR của Oracle


18
Điều này tương đương với việc đổi tên filename.jarthành filename.jar.zipvà sau đó chỉ giải nén nó.
Mathias Bynens

27
Điều này không trích xuất mã nguồn. Nó trích xuất mã nguồn được biên dịch.
0xcaff

5
@caffinedmonkey, nó trích xuất mã nguồn khi tệp chứa các tệp java, ví dụ: các tệp có tên thường kết thúc bằng "-ource". Nó thực sự chỉ trích xuất các tệp. Class khi jar không chứa bất kỳ tệp nguồn java nào.
edwardmp

37

Tôi tin rằng điều này có thể được thực hiện rất dễ dàng. Bạn luôn có thể trích xuất các tệp nguồn (tệp Java) của tệp jar thành tệp zip.

Các bước để lấy nguồn của tệp jar dưới dạng zip:

  1. Tải xuống JAD từ http://techieme.in/resource-needed/ và lưu nó tại bất kỳ
    vị trí nào trên hệ thống của bạn.
  2. Kéo và thả bình mà bạn muốn các nguồn trên JAD. 3 JAD UI sẽ mở với tất cả cấu trúc gói theo định dạng cây.
  3. Nhấp vào menu Tệp và chọn lưu nguồn jar.
  4. Nó sẽ lưu các nguồn dưới dạng một zip có cùng tên với jar.

Hi vọng điêu nay co ich.

Liên kết đã chết do một số lý do vì vậy việc thêm liên kết từ nơi bạn có thể tải xuống JDGUI


1
@Nitesh ... Tôi sẽ đăng liên kết được lưu trữ trên trang web của mình ... vui lòng tải xuống từ đó
dharam

4
Phiên bản trong liên kết techieme hoạt động rất đẹp, cảm ơn bạn!
DerStrom8

29

JAR của bạn có thể chứa nguồn và javadoc, trong trường hợp đó bạn chỉ cần sử dụng jar xf my.jarđể trích xuất chúng.

Nếu không, bạn có thể sử dụng trình dịch ngược như được đề cập trong câu trả lời của adarshr:

Sử dụng GUI GUI . Mở ứng dụng, kéo và thả tệp JAR của bạn vào đó.


21
Lưu ý rằng các tệp .jar thực sự là các tệp .zip và có thể được mở bằng bất kỳ công cụ ZIP nào.
Chris Nava

11

Tôi biết đó là một câu hỏi cũ Vẫn nghĩ rằng nó sẽ giúp được ai đó

1) Chuyển đến thư mục tệp jar của bạn.

2) thay đổi phần mở rộng của nó thành .zip.

3) Bạn tốt để đi và có thể dễ dàng giải nén nó bằng cách nhấp đúp vào nó.

Lưu ý: Tôi đã thử nghiệm điều này trong MAC, nó hoạt động. Hy vọng nó cũng sẽ hoạt động trên windows.


2
@JCodex, tôi đang thực hiện một dự án nghiên cứu về "công cụ phân tích tình cảm" và công cụ phân tích tình cảm của nó thực sự chứa cả các tệp java VÀ lớp. vì vậy bình luận của bạn không đúng 100%. Tôi biết nó thường sẽ chỉ chứa
Class

2
Giải pháp của bạn sẽ chỉ trích xuất các tập tin. Class chứ không phải mã nguồn.
Carlos Sá

Có vẻ như JD-GUI là một công cụ đa nền tảng thực sự dịch ngược mã và hiển thị mã nguồn cho các lớp trong tất cả các gói. Tôi đã thử nó và có thể lấy mã nguồn trong một giây trong MacOS. Tôi đã cài đặt Java 8. Bạn có thể lấy nó trên jd.benow.ca Không chắc nó có hoạt động cho các dự án lớn không.
Carlos Sá

1
cần mã nguồn không được cung cấp theo cách bạn mô tả
chiragchavda.ks

3

Thực hiện như sau trên hộp linux của bạn nơi java hoạt động (nếu bạn thích cách làm việc cuối cùng)

cd ~
mkdir decompiled_code && cd decompiled_code
wget https://bitbucket.org/mstrobel/procyon/downloads/procyon-decompiler-0.5.36.jar
java -jar procyon-decompiler-0.5.36.jar /Path/to/your/jar -o .

LƯU Ý : như @Richard nhận xét "điều này có thể là bất hợp pháp tùy thuộc vào việc bạn có sở hữu bản quyền đối với bình, quốc gia bạn sống và mục đích của bạn để thực hiện hay không."


Đối với một tệp lớp cụ thể, bạn có thể thực hiện gói java -jar procyon-decompiler-0.5.36.jar / of / the / java / class. Class> className.java
nitin angadi

0

AndroChef Java Decompiler tạo mã rất tốt mà bạn có thể sử dụng trực tiếp trong các dự án của mình ...


-2

Các công cụ trên trích xuất các bình. Ngoài ra có một số công cụ và lệnh khác để trích xuất jar. Nhưng AFAIK bạn không thể lấy mã java trong trường hợp mã đã bị xáo trộn.


7
Câu trả lời lớn nhất
fnc12

-6

giả sử tệp JAR của bạn nằm trong C: \ Documents and Settings \ mmeher \ Desktop \ jar và tên tệp JAR là xx.jar, sau đó viết hai lệnh dưới đây trong dấu nhắc lệnh:

1> cd C: \ Tài liệu và Cài đặt \ mmeher \ Desktop \ jar

2> jar xf xx.jar


-6

-Covert tệp .jar thành .zip (Trong cửa sổ chỉ cần thay đổi phần mở rộng) -Unzip thư mục .zip -Bạn sẽ nhận được các tệp .java hoàn chỉnh


3
Như một lưu ý nhỏ về phương pháp này ... Đúng là các tệp jar là các tệp zip ưa thích. Tuy nhiên, giải nén một tệp jar rất có thể sẽ mang lại các tệp *. Class, đó là các tệp java được "biên dịch". Có thể "dịch ngược" các tệp lớp thành các tệp java bình thường. Chức năng này được bao gồm trong nhiều IDE
Daniel Hernandez

điều này sẽ chỉ mở khóa các tập tin lớp
Harshil
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.