Компилировать jdk через ant

Я хочу скомпилировать jdk файлы, чтобы включить отладочную информацию. Я хотел бы использовать ant, потому что он включен в мою среду NetBeans, поэтому я сделал следующее:

  • unzipped/src.zip в каталоге tmp
  • создал очень простой файл build.xml(одна цель по умолчанию, один taks) в моем каталоге tmp:
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="CompileJDK" default="default" basedir=".">
    <target name="default">
    <javac srcdir="."
             destdir="jdkwd"
             debug="on"
    />
    </target>
    </project>
  • создан каталог jdkwd
  • запущен ant без параметров (просто > log.txt)

Это приводит к 100 ошибкам компиляции, таким как:

    [javac] C:\jdkdebug\java\awt\Window.java:196: cannot find symbol
[javac] symbol  : class IdentityArrayList
[javac] location: class java.awt.Window
[javac]     private static final IdentityArrayList<Window> allWindows = new IdentityArrayList<Window>();

У меня на моем компьютере установлен только один JDK, поэтому я не знаю, почему он не разрешает все эти ссылки.

UPDATE: Большинство этих неразрешенных ссылок относится к пакету:

sun.awt.util

Теперь вопрос исправляется: где находятся отсутствующие файлы jdk?

Ответ 1

Построение самого JDK является сложным процессом и не может быть достигнуто простым вызовом javac, заключенным внутри проекта ant.

Вы должны посмотреть на OpenJDK Build README, чтобы получить инструкции по сборке для вашей платформы.

Ответ 2

http://www.oracle.com/technetwork/java/faq-141681.html

A14. Где я могу получить исходный код языка программирования Java?

Программное обеспечение Java имеет два отдельных пакета исходного кода, которые вы можете получить бесплатно:

Сам Java 2 SDK, Standard Edition содержит файл src.zip, который содержит исходный код для общедоступных классов в пакете java. Поскольку это не содержит классов sun. *, вы не можете выполнить полную сборку технологии Java из этих исходных файлов. Эти исходные файлы предназначены для вашей информации, чтобы дополнить документацию, чтобы вы могли видеть, как Работает технология Java.

Полную версию исходного кода можно получить у нас, перейдя на веб-сайт лицензирования исходного кода сообщества.

Ссылка на исходный код сообщества неверна: теперь http://download.java.net/openjdk/jdk7/

Ответ 3

Попробуйте добавить путь к классу в ваш вызов javac.

<classpath path="/PATH/to/missing_class/" />

Также попробуйте запустить ant с параметрами -d и -v. Это много выходных данных, но покажет вам, где искать классы.

Ответ 4

Согласно этот пост (с 2007 года), вы должны включить rt.jar и tools.jar в свой путь к классу для компиляции источников JRE.

Однако я пробовал это, и он не работает для меня (100 ошибок).

В сообщении christhielen есть более сложные и более старые (2004) инструкции в ошибка Java, запрашивающая символы отладки.

Ответ 5

Если вы используете компиляцию Gentoo, OpenJDK будет такой же простой, как запуск emerge dev-java/icedtea.

Существует флаг использования debug, который отключает все оптимизации, я сам не пробовал, но, скорее всего, это то, что вы хотите. Если это не так - тогда не должно быть большого смысла менять скрипты сборки, но вам потребуется немного узнать о портеже.