Де знайти вихідний код Java JDK? [зачинено]


153

Я хотів би побачити, що робить метод у Java API. Тому я хочу вихідний код JDK. Перш ніж перевстановити Linux, у мене був src.zipпакет з усім офіційним вихідним кодом. Я просто повинен був сказати Eclipse, де цей файл, і я міг бачити код. Але тепер у мене вже немає файлу ...

Тож питання: Де я можу його знайти?


16
Я завжди знаходив src.zipфайл, який містить загальнодоступний Java API в каталозі установки JDK. Це те, що ви шукаєте (я в основному використовував Windows, тому, можливо, у дистрибутиві Linux його немає).
Еш

16
Це смішно, що це питання №3 в Google під час пошуку джерела JDK. №1 і №2 - це посилання Oracle, які НЕ мають посилань на вихідний код. Я завжди переживаю це питання під час встановлення JDK. Оракул, будь ласка.
Анджей Реманн

4
src.zip - вихідний пакет лише для основного API. Немає загальнодоступних джерел для всього Java SE від Oracle, деякі частини є закритим джерелом. Однак, залежно від платформи, ви можете встановлювати та використовувати в OpenJDK бінарний файл із 100% доступними джерелами. Для джерел - перейдіть на сторінку openjdk.java.net та клонуйте сховище джерел для потрібної вам версії. Для бінарних файлів - кілька постачальників надають такі бінарні файли, включаючи IcedTea для Linux.
Іван Крилов

1
@Hoto, Я використовую Java з 1996 року, і я витягаю волосся, намагаючись знайти oracle src.zip для JDK7. Це неймовірно нерозумно. WhereTF це ???? Це ніколи не було таким важким. Зауважте, я не хочу OpenJDK.

2
@Ash, я завжди знаходив src.zip і в інсталяційному каталозі. Потім ви витягнете його до каталогу ./src/, і все було добре. Але його зараз немає. В дійсності, readme JDK 1.7 вказує, що має бути присутній src.zip. І немає. Це з розуму.

Відповіді:


128

Ви не сказали, яку версію хочете, але тут можна завантажити архів вихідного коду JDK 8 , а також JDK 7 та JDK 6 .

Крім того, ви можете переглядати або клонувати сховища Mercurial: 8 , 7 , 6 .


1
Так; скажемо, що я хочу 6, а потім на цій сторінці завантаження, що мені потрібно завантажити? Великий файл jdk-6u21-ea-src-b04-jrl-05_may_2010.jar, 136.48 MB? Я вже завантажив цю. Але не містить вихідного коду.
Мартійн Курто,

3
@Martijn: Ви спробували завантажити великий файл jar і потім прочитали README всередині нього? В основному ви просто запускаєте його java -jar jdk-6u21-ea-src-b04-jrl-05_may_2010.jar. Це витягне джерело.
Джон Скіт

2
Так, я це зробив. І я видобув це так, як ти написав. Але в ньому немає джерела або блискавки.
Мартійн Курто

1
Просто хотів додати, що поточне (2013) місце зараз jdk7.java.net, яке перенаправляє до OTN для будь-яких завантажень.
Кедар Массваде


32

Швидше за все, що ви вже отримали вихідний код з JDK, важливо знайти, де він знаходиться. Якщо папка JDK не містить вихідного коду:

sudo apt-get install openjdk-7-source

OSX Люди, пошук у домашніх формулах.

У ubuntu команда вище покладе ваш файл souce під: / usr / lib / jvm / openjdk-7 /

Хороша новина полягає в тому, що Eclipse відведе вас туди (Як прив’язати Eclipse до вихідного коду Java):

Дотримуйтесь помаранчевих кнопок

введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення


16

До жаль, як цей лист, не дивлячись на їх власній документації ріого, немає ні src.zip в JDK 7 або 8 встановити каталоги при завантаженні версії для Windows .

Примітка: можливо, це трапляється тому, що багато хто з нас насправді не запускають .exe install, а замість цього витягують його. Багато хто з нас не запускає інсталяцію Java (встановлення повного видуваного вікна) з міркувань безпеки .... ми просто хочемо, щоб JDK поставила кудись із місця, де потенційні віруси не можуть її знайти.

Але їхня політика в відношенні вікна .exe (незалежно від того, що дійсно є) дійсно горіхи, ОДНАК , то src.zip НЕ існує в Linux встановити (а .tar.gz). Існує кілька способів вилучення .tar та .gz, і я віддаю перевагу безкоштовній утиліті "7Zip".

  1. завантажити 64-бітний Linux .tar.gz
  2. скористайтеся 7zip, щоб розпакувати .tar.gz до .tar
  3. використовуйте 7zip для витягання .tar в інсталяційний каталог
  4. src.zip буде чекати на вас у цьому інсталяційному каталозі.
  5. витягніть його і помістіть, де вам подобається.

Оракуле, це насправді нерозумно.


3
Oracle JDK8 (принаймні 1,88,60) мав src.zip для мене в Windows. Eclipse, однак, не взяв його за замовчуванням.
просо

@milletron, я теж помітив це у нещодавньому випуску Windows. У мене є відчуття, що щось вийшло з ладу у їхніх програмах завантаження зображень протягом певного періоду часу раніше. Можливо, це пов’язано з різницею припинення лінії b / w unix (LF) та windows (CRLF)?

Це мені довелося зробити і для Java 9.
Лій

11

У мене була ця проблема з моїм Ubuntu.

Все, що мені потрібно було зробити, щоб отримати джерела для моїх інвалідів Java:

sudo apt-get install sun-java6-source 

У Ubuntu 14.04:E: Unable to locate package sun-java6-source
Nateowami

8

На даний момент JDK 1.6, який я використовую на OSX Mountain Lion, не входить в комплекті src.zip, і наскільки я можу сказати, немає більше підтримуваних OSX JDK для 1.6.

Тому я завантажив джерело OpenJDK (використовуючи посилання з прийнятої відповіді (+1)), а потім запустив:

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 *

(назви ваших файлів та шляхи можуть відрізнятися ...)

Пов’яжіть це src.jarз відповідною платформою Java у вашій IDE, і вам слід добре поїхати.

Існують деякі розбіжності між джерелом OpenJDK і JDK, який я зараз працюю (номери рядків не відповідають одному в налагоджувальному пристрої), але якщо все, що вам потрібно, це zip / jar вказати свій IDE на відносно кілька випадків, коли вам потрібно зазирнути до якогось коду, щоб зрозуміти, як щось працює, тоді це слід зробити.


1
THX, мені це було потрібно під час використання Mac. не існує чітких інструкцій щодо останньої ОС та як захопити джерело. (усі вони говорять про завантаження оновлень, які не включають джерело, або завантаження з Oracle, але все це
тумано

1
Просто хотілося підкреслити, що це правильний спосіб зробити це, тому що, як сказав @dtc, кожна інша інструкція там помилкова або нерівна. Це робилося з IntelliJ 15 на проекті Scala, це спрацювало чудово. Дякую @MisterEd!
mjuarez

src.jar - не повне джерело. Для колишніх, він не містить джерело javax.net
Kannan Ramamoorthy

4

Цей файл міститься у стандартному завантаженні JDK . Також у вашій системі Linux, ймовірно, є сховище JDK. У моєму файлі Ubuntu Linux розташований тут: /usr/lib/jvm/java-6-sun-1.6.0.20/src.zip


Ага! Чи можете ви розмістити пакунки, встановлені для ваших Java VM та JDK, будь ласка. Тому що у мене немає цієї папки.
Мартійн Курто

4

У JDK 8 джерело можна знайти в /src.zip. Зараз у деяких проміжних випусках цей zip відсутній, але знову ж таки він доступний.введіть тут опис зображення

переконайтеся, що ви також обрали джерело з майстра встановлення.



2

Ну, я відкрив термінал у своєму Mac і наберіть: "echo $ JAVA_HOME", тоді я дістав каталог, зайшов туди і знайшов src.zip


1

Так!! Зрозумів!

Я завантажив Java Developer Kit (JDK) з sun.com для Linux. Був src.zip дюйма. Але спочатку я видалив усі пакети Java синаптично.


зауважте, що в Linux насправді не потрібно викорінювати Java для встановлення Java. Я завжди (більше ніж десять років) встановлюю Java як некоріозний користувач у своїх системах Un * x (так, ні, я не використовую apt-get / synaptic / що завгодно).
SyntaxT3rr0r

1

Офіційне посилання більше не пропонує оригінальний вихідний код. Офіційне посилання та випадкові пошукові запити google допоможуть вам відкрити jdk. Відкритий jdk спричиняє проблеми зі збіркою Android, якщо файли скриптів збірки не змінені. Оригінальний пакет можна знайти тут:

sudo add-apt-repository "deb http://ppa.launchpad.net/ferramroberto/java/ubuntu oneiric main"

У цьому репо все ще є пакет sun-java6-source. Кредит: http://pulasthisupun.blogspot.com/2012/05/installing-sun-java-6-with-apt-get-in.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.