Сборка библиотеки OpenJDK из исходного кода?

Я хочу поэкспериментировать с изменениями библиотеки java в java.lang и, возможно, со временем другими пакетами. Это значит вместо использования rt.jarЯ хочу иметь возможность выделить хотя бы java.lang и скомпилировать их.

Невозможно редактировать исходный код для классов в java.lang при использовании rt.jar, потому что они уже найдены в rt.jar.

Я нашел репозиторий в Mercurial: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/tip/src/share/classes/

но нет инструкции о том, как построить.

Я только что построил JDK, установив JDK9, а затем с помощью Mercurial:

hg clone http://hg.openjdk.java.net/jdk/jdk/

Я могу успешно собрать исполняемый файл java и все утилиты, но rt.jar отсутствует в этом пакете.

1 ответ

Решение

Причина, по которой ваша сборка Java 9 не производит файл "rt.jar", заключается в том, что в Java 9 больше нет "rt.jar" или "tools.jar". Как говорится в JEP 220:

"Файлы классов и ресурсов, ранее сохраненные в lib/ rt.jar, lib/ tools.jar, lib/ dt.jar и различных других внутренних jar-файлах, теперь будут храниться в более эффективном формате в специфичных для реализации файлах в lib. каталог. Формат этих файлов не будет указан и может быть изменен без уведомления. "

Итак... в основном... ваша сборка Java 9 работает.

Если вы хотите провести эксперименты с изменением частей библиотеки классов Java, я предлагаю следующие возможные подходы:

  • Используйте Java 8... который имеет "rt.jar"
  • Внесите изменения в исходное дерево Java 9 и постройте его обычным способом.
  • Узнайте, как внести ваши изменения, изменив процедуру сборки Java 9.
  • Изобразите, как работают "файлы, специфичные для реализации", и внесите свои изменения, используя инструменты, которые использует процедура сборки.
Другие вопросы по тегам