скомпилировать JDK через муравей - PullRequest
11 голосов
/ 22 ноября 2011

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

  1. unzipped /src.zip в каталоге tmp
  2. создал очень простой файл build.xml (одна цель по умолчанию, один такт) в моем каталоге 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>
  1. создал каталог jdkwd
  2. запустил 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, поэтому яне знаю, почему это не разрешает все эти ссылки.

ОБНОВЛЕНИЕ: большинство из этих неразрешенных ссылок принадлежит пакету:

sun.awt.util

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

Ответы [ 5 ]

11 голосов
/ 25 ноября 2011

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

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

8 голосов
/ 29 ноября 2011

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

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

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

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

Полный выпуск исходного кода доступен у нас на веб-сайте Licensing Community Source Licensing.

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

4 голосов
/ 25 ноября 2011

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

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

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

4 голосов
/ 22 ноября 2011

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

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

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

2 голосов
/ 29 ноября 2011

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

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

...