Сборка библиотеки 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.
- Изобразите, как работают "файлы, специфичные для реализации", и внесите свои изменения, используя инструменты, которые использует процедура сборки.