Tìm mã nguồn JDK Java ở đâu? [đóng cửa]


153

Tôi muốn xem một phương thức trong API Java làm gì. Vì vậy, tôi muốn Mã nguồn JDK. Trước khi cài đặt lại Linux, tôi đã có src.zipgói có tất cả mã nguồn chính thức trong đó. Tôi chỉ cần nói cho Eclipse biết tệp này ở đâu và tôi có thể thấy mã. Nhưng bây giờ tôi không có tập tin nữa ...

Vì vậy, câu hỏi là: tôi có thể tìm thấy nó ở đâu?


16
Tôi đã luôn tìm thấy src.ziptệp chứa API Java công khai trong thư mục cài đặt JDK. Đó có phải là những gì bạn đang tìm kiếm (Tôi chủ yếu sử dụng Windows, vì vậy có thể bản phân phối Linux không có nó).
Tro

16
Điều này thật khó hiểu khi câu hỏi này đứng thứ 3 trong google khi tìm kiếm nguồn JDK. # 1 và # 2 là các liên kết Oracle KHÔNG có liên kết mã nguồn. Tôi luôn luôn đi qua câu hỏi này khi cài đặt JDK. Xin vui lòng Oracle.
Andrzej Rehmann

4
src.zip là gói nguồn chỉ dành cho API lõi. Không có nguồn công khai nào cho toàn bộ Java SE từ Oracle, một số phần là nguồn đóng. Tuy nhiên, tùy thuộc vào một nền tảng, bạn có thể cài đặt và sử dụng trên nhị phân OpenJDK với 100% nguồn có sẵn. Đối với các nguồn - hãy truy cập openjdk.java.net và sao chép một kho nguồn cho phiên bản mà bạn cần. Đối với các tệp nhị phân - một số nhà cung cấp cung cấp các tệp nhị phân như vậy bao gồm IcedTea cho linux.
Ivan Krylov

1
@ Xin chào, tôi đã sử dụng Java từ năm 1996 và tôi đang cố gắng tìm kiếm src.zip cho JDK7. Điều này là ngu ngốc không thể tin được. Nó ở đâu vậy ???? Nó không bao giờ được sử dụng là khó khăn này. Lưu ý, tôi không muốn OpenJDK.

2
@Ash, tôi đã luôn luôn tìm thấy một src.zip trong thư mục cài đặt. Sau đó, bạn sẽ trích xuất nó vào một thư mục ./src/ và tất cả đều ổn. Nhưng giờ nó không còn nữa. THỰC SỰ, readme JDK 1.7 chỉ ra rằng cần phải có src.zip. Và không có. Điều này thật điên rồ.

Câu trả lời:


128

Bạn chưa nói phiên bản nào bạn muốn, nhưng có thể tải xuống kho lưu trữ mã nguồn JDK 8 tại đây , cùng với JDK 7JDK 6 .

Ngoài ra, bạn có thể duyệt hoặc sao chép các kho Mercurial: 8 , 7 , 6 .


1
Đúng; giả sử tôi muốn 6 và sau đó trên trang tải xuống đó, tôi phải làm gì để tải xuống? Các tập tin lớn jdk-6u21-ea-src-b04-jrl-05_may_2010.jar, 136.48 MB? Tôi đã tải cái đó rồi. Nhưng không chứa mã nguồn.
Martijn Courteaux

3
@Martijn: Bạn đã thử tải xuống tệp jar lớn và sau đó đọc README bên trong nó chưa? Về cơ bản bạn chỉ cần chạy nó với java -jar jdk-6u21-ea-src-b04-jrl-05_may_2010.jar. Nó sẽ trích xuất nguồn.
Jon Skeet

2
Vâng, tôi đã làm nó. Và tôi trích xuất nó như bạn đã viết. Nhưng không có jar nguồn hoặc zip trong đó.
Martijn Courteaux

1
Chỉ muốn thêm rằng địa điểm hiện tại (2013) hiện là jdk7.java.net chuyển hướng đến OTN cho bất kỳ tải xuống nào.
Kedar Mhaswade

3
Đối với 1.7 cũng có sourceforge.net/projects/jdk7src
Jason C

32

Có thể bạn đã có mã nguồn với JDK, vấn đề là tìm nó ở đâu. Trong trường hợp, thư mục JDK không chứa mã nguồn:

sudo apt-get install openjdk-7-source

OSX Folks, tìm kiếm trong các công thức homebrew.

Trong ubfox, lệnh trên sẽ đặt tệp souce của bạn dưới: / usr / lib / jvm / openjdk-7 /

Tin tốt là Eclipse sẽ đưa bạn đến đó (Cách liên kết Eclipse với mã nguồn Java):

Thực hiện theo các nút màu cam

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


16

Đáng buồn thay, khi viết bài này, DESPITE đọc tài liệu riêng của họ, không có src.zip trong các thư mục cài đặt JDK 7 hoặc 8 khi bạn tải xuống phiên bản Windows .

Lưu ý: có lẽ điều này xảy ra vì nhiều người trong chúng ta không thực sự chạy cài đặt .exe mà thay vào đó giải nén nó. Nhiều người trong chúng ta không chạy cài đặt Java (cài đặt toàn bộ cửa sổ) vì lý do bảo mật .... chúng tôi chỉ muốn JDK đưa ra một nơi nào đó mà virus tiềm năng không thể tìm thấy.

Nhưng chính sách của họ liên quan đến windows .exe (bất kể nó thực sự là gì) thực sự là hạt dẻ, TUY NHIÊN , src.zip DOES tồn tại trong bản cài đặt linux (a .tar.gz). Có nhiều cách để trích xuất một .tar và .gz, và tôi thích tiện ích "7Zip" miễn phí.

  1. tải xuống Linux 64 bit .tar.gz
  2. sử dụng 7zip để giải nén .tar.gz thành .tar
  3. sử dụng 7zip để giải nén .tar vào thư mục cài đặt
  4. src.zip sẽ đợi bạn trong thư mục cài đặt đó.
  5. kéo nó ra và đặt nó ở nơi bạn thích

Oracle, điều này thực sự vượt quá ngu ngốc.


3
Oracle JDK8 (ít nhất là 1.8.60) đã có src.zip cho tôi trên Windows. Tuy nhiên, Eclipse không chọn nó theo mặc định.
milletron

@milletron, tôi cũng nhận thấy nó trong một bản phát hành windows gần đây. Tôi có cảm giác rằng một cái gì đó đã bị hỏng trong cửa sổ của họ tải xuống sản xuất hình ảnh trong một khoảng thời gian trước đó. Có lẽ liên quan đến sự khác biệt trong chấm dứt dòng b / w unix (LF) và windows (CRLF)?

Đây là những gì tôi phải làm cho Java 9.
Lii

11

Tôi gặp vấn đề này với Ubuntu của tôi.

Tất cả những gì tôi cần làm để có được nguồn cho sự phân tách java của mình là:

sudo apt-get install sun-java6-source 

Trên Ubuntu 14.04:E: Unable to locate package sun-java6-source
Nateowami

8

JDK 1.6 tôi hiện đang sử dụng trên OSX Mountain Lion cũng không đi kèm src.zipvà theo như tôi có thể nói là không có OSX JDK được hỗ trợ cho 1.6 nữa.

Vì vậy, tôi đã tải xuống nguồn OpenJDK (sử dụng các liên kết từ câu trả lời được chấp nhận (+1)) rồi chạy:

cd ~/Downloads
mkdir jdk6src
cd jdk6src
tar xf ../openjdk-6-src-b27-26_oct_2012.tar.gz
cd jdk/src/share/classes
jar cf /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/src.jar *

(tên tệp và đường dẫn của bạn có thể thay đổi ...)

Liên kết điều đó src.jarvới nền tảng Java thích hợp trong IDE của bạn và bạn sẽ thấy ổn.

Có một số khác biệt giữa nguồn OpenJDK và JDK tôi hiện đang chạy (số dòng không khớp với trình gỡ lỗi, đối với một), nhưng nếu tất cả những gì bạn muốn là một zip / jar để trỏ IDE của bạn tương đối Một vài trường hợp bạn cần xem lén một số mã để hiểu cách thức hoạt động của một cái gì đó, thì điều này sẽ thực hiện thủ thuật.


1
Thx, tôi cần điều này trong khi sử dụng mac. giống như không có hướng dẫn rõ ràng về HĐH mới nhất và cách lấy nguồn. (tất cả đều nói về việc tải xuống các bản cập nhật không bao gồm nguồn hoặc tải xuống từ nhà tiên tri nhưng tất cả đều mơ hồ hoặc sai lầm theo cách này hay cách khác)
dtc

1
Chỉ muốn nhấn mạnh rằng đây là cách đúng đắn để làm điều đó, bởi vì như @dtc đã nói, mọi hướng dẫn khác ngoài kia đều có lỗi hoặc cũ. Đã làm điều này với IntelliJ 15 trong một dự án Scala, nó hoạt động hoàn hảo. Cảm ơn @MisterEd!
mjuarez

src.jar không phải là một nguồn hoàn chỉnh. Ví dụ, nó không chứa nguồn javax.net
Kannan Ramamoorthy

4

Tệp này được chứa trong bản tải xuống JDK tiêu chuẩn . Ngoài ra hệ thống Linux của bạn có thể có JDK trong kho lưu trữ. Trong tệp Ubuntu Linux của tôi được đặt ở đây: /usr/lib/jvm/java-6-sun-1.6.0.20/src.zip


Aha! Bạn có thể đăng những gói bạn đã cài đặt cho Java VM và JDK không? Bởi vì tôi không có thư mục đó.
Martijn Courteaux

4

Trong nguồn JDK 8 có thể được tìm thấy trong /src.zip. Bây giờ trong một số bản phát hành trung gian, zip này bị thiếu nhưng một lần nữa nó có sẵn.nhập mô tả hình ảnh ở đây

đảm bảo rằng bạn chọn nguồn cũng từ trình hướng dẫn cài đặt.



2

Chà, tôi đã mở terminal trong máy Mac của mình và gõ: "echo $ JAVA_HOME" sau đó tôi nhận được thư mục, đến đó và tìm thấy src.zip


1

Đúng!! Hiểu rồi!

Tôi đã tải xuống Bộ phát triển Java (JDK) từ sun.com cho Linux. Có src.zip. Nhưng trước tiên tôi đã gỡ cài đặt tất cả các gói Java bằng synaptic.


lưu ý rằng trong Linux thực sự không cần phải root để cài đặt Java. Tôi luôn luôn (từ hơn mười năm) cài đặt Java với tư cách là người dùng không phải root trên các hệ thống Un * x của tôi (vì vậy, không, tôi không sử dụng apt-get / synaptic / bất cứ điều gì).
Cú phápT3rr0r

1

Liên kết chính thức không còn cung cấp mã nguồn gốc. Liên kết chính thức và tìm kiếm google thông thường sẽ đưa bạn đến với jdk mở. Mở jdk gây ra sự cố với bản dựng Android trừ khi các tệp tập lệnh xây dựng bị sửa đổi. Gói ban đầu có thể được tìm thấy ở đây:

sudo add-apt-repository "deb http://ppa.launchpad.net/ferramroberto/java/ub Ubuntu mainiric"

Repo này vẫn có gói sun-java6. Tín dụng: http://pulasthisupun.blogspot.com/2012/05/installing-sun-java-6-with-apt-get-in.html

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.