Làm cách nào để xem mã nguồn của JRE trong Eclipse?


85

Sử dụng Eclipse, tôi muốn xem mã nguồn cho một lớp Java lõi (Ví dụ java.util.concurrent.ConcurrentHashMap:) nhưng khi tôi điều hướng đến nguồn bằng cách sử dụng 'Khai báo mở', nó cho biết 'Không tìm thấy nguồn' và cung cấp cho tôi tùy chọn để đính kèm nguồn.

Câu hỏi của tôi là; làm cách nào để đính kèm nguồn? Tôi lấy nguồn .jar từ đâu cho java.util.concurrentthư viện?

Câu trả lời:


84

Bạn cần phải cài đặt JDK. Sau đó, bạn có thể nhìn vàoJDK_INSTALL_DIR\src.zip

Đối với tôi nó là C:\Program Files\java\jdk1.6.0_11\(phụ thuộc vào phiên bản hiện tại của bạn)

Bạn không cần phải tải một phiên bản mã nguồn mở đặc biệt.


3
Bây giờ thì sao? Oracle dường như ẩn nguồn? bạn có thể vui lòng cho lời khuyên làm thế nào để làm tương tự bây giờ?
Ahmed Hamdy

95

Khi bạn đang viết mã trong Eclipse, hãy nhấn CTRLvà nhấp vào bất kỳ tên lớp Java lõi nào trong nguồn của bạn. Bây giờ Eclipse sẽ hiển thị một màn hình cho biết bạn chưa cài đặt các nguồn. Tuy nhiên, trong màn hình này có một liên kết là "Đính kèm nguồn ...". Nhấp vào liên kết đó và nhập tệp src.zip từ thư mục cài đặt JDK của bạn (src.zip). cái này cần phải dùng mẹo


9

Có một vài câu trả lời tốt ở đây về nơi lấy nguồn. Nhưng một lời cảnh báo: Tôi sẽ cảnh giác về cách bạn sử dụng nó (nếu bạn chỉ sử dụng nó để tham khảo). Các tài liệu API là hợp đồng duy nhất mà bạn nên mã hóa chống lại, và là những gì các nhà phát triển sẽ tiếp tục ổn định / nguyên vẹn giữa các phiên bản. Tôi sẽ không sử dụng nguồn để tìm hiểu chi tiết triển khai và sau đó viết mã các ứng dụng của mình liên quan đến các chi tiết triển khai đó, vì chúng có thể thay đổi giữa các bản phát hành.


1
Không có vấn đề với :) rằng
Rob Hruska

6

Bạn sẽ có thể thấy "Thư viện hệ thống JRE [jdk1.x.xxxx]" khi bạn xem Đường dẫn xây dựng Java của dự án của mình.

Bạn có thể truy cập màn hình cấu hình đường dẫn xây dựng dự án bằng cách: nhấp chuột phải vào dự án -> Đường dẫn xây dựng -> Định cấu hình Đường dẫn xây dựng ... Bạn sẽ có thể thấy mục Thư viện Hệ thống JRE ở cuối danh sách.

Cách dễ nhất để xem nguồn cho lớp là sử dụng phím tắt "Loại Mở". Mặc định cho phím tắt này là: Ctrl+ Shift+ T". Lớp bạn đang tìm sẽ xuất hiện khi bạn nhập tên của nó.


4

Bạn có thể truy cập http://openjdk.java.net/ và tải xuống các bản dựng mới nhất của dự án openJDK. Tôi nghĩ điều này sẽ cung cấp cho bạn những gì bạn cần.


4

Đối với ubuntu, hãy cài đặt openjdk-6-source và sử dụng /usr/lib/jvm/java-6-openjdk/src.zip


3

Nếu bạn không thể tìm thấy nguồn thực, bạn cũng có thể sử dụng trình dịch ngược để tạo lại nguồn từ tệp lớp.

Cá nhân tôi sử dụng JAD kết hợp với plugin JADClipse để xem nguồn trong Eclipse.


3

Nhấp chuột phải vào dự án -> Đường dẫn xây dựng -> Định cấu hình Đường dẫn xây dựng. Bây giờ hãy chỉnh sửa jre của bạn> chọn tùy chọn thứ 2 thay thế jre -> chọn jdk bất kỳ ( không phải jre). Kết thúc, Bây giờ mở bất kỳ lớp nào bằng cách nhấn ctrl + nhấp chuột, mã nguồn của nó sẽ hiển thị.




0

Bạn có thể sử dụng 'Eclipse Class Decompiler tích hợp JD, Jad,' từ Eclipse Marketplace.

Từ hộp tìm kiếm trong Eclipse Marketplace, hãy viết: 'jad' và bạn sẽ tìm thấy nó.


0

Tệp src.zip có trong thư mục jdk đã cài đặt:..\Program Files\Java\jdk1.8.0_131

Cung cấp đường dẫn này trên màn hình hiển thị Đính kèm nguồn ... đã làm việc cho tôi.


0

chúng ta có thể thấy C: \ Program Files \ Java \ jdk1.8.0_73 \ src.zip trong đó C: \ Program Files là thư mục chính nơi tôi đã cài đặt java.

trong nhật thực, nó sẽ hiển thị như Không tìm thấy nguồn . hình thức có liên kết sẽ đến như nguồn duyệt. duyệt liên kết C: \ Program Files \ Java \ jdk1.8.0_73 \ src.zip và đính kèm nó. bây giờ bạn có thể thấy mã nguồn của mình.


0

@jjnguy đề xuất phù hợp với tôi. Nhưng hãy chắc chắn rằng bạn cũng đã thay đổi trình biên dịch mặc định. Nhấp chuột phải vào dự án -> Trình biên dịch Java-> Nhấp vào liên kết bên dưới Tuân thủ JDK (phần bên phải).

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.