Часто задаваемые вопросы о JDT

Можно ли в рабочей среде применять компилятор Java, отличный от встроенного (например, javac)?

Число JDT предоставляет различные сложные функции, в том числе полностью автоматическую дополняющую компиляцию, вычисление фрагментов кода, помощник по работе с кодом, иерархии типов и оперативную замену кода. Этим функциям необходима специальная поддержка, которая есть в компиляторе Java рабочей среды (встроенном в дополняющий компоновщик проектов JDT), но отсутствует в стандартных компиляторах Java.

Каким образом появляются пакеты Java?

Проект содержит только файлы и папки. Пакет Java создается на основе записи в пути к классам проекта Java (в пользовательском интерфейсе пакеты представлены в панели Структура пакетов так, как они определены в пути к классам). Совет: Если структура пакетов отлична от ожидаемой, проверьте путь к классам. Функции поиска Java ищут объявления о и ссылки из элементов Java только в пути к классам.

Когда следует применять внутренний, а когда - внешний JAR-файл библиотеки?

Внутренний ресурс находится в некотором проекте в рабочей среде и поэтому контролируется рабочей средой; как и для других ресурсов, для внутренних ресурсов может поддерживаться управление версиями в рабочей среде. Внешний ресурс не входит в состав рабочей среды и может использоваться только по ссылке. Например, JRE часто бывает внешней и очень большой, и нет необходимости связывать ее с системой VCM.

Когда следует использовать папки исходного кода в проекте Java?

Каждый проект Java находит свои исходные файлы Java с помощью одной или нескольких записей о типе исходного кода, расположенных в пути к классам проекта. Применение папок исходного кода позволяет распределить пакеты большого проекта по тематическим группам или разместить исходный код отдельно от остальных файлов в том же проекте. Кроме того, папки исходного кода рекомендуется применять в случае, если некоторые файлы (например, документацию) не следует включать в путь компоновки.

Что такое прикрепления исходного кода и как их создавать?

Библиотеки хранятся в виде JAR-файлов, содержащих двоичные файлы классов (а также, возможно, другие ресурсы). Эти двоичные файлы классов предоставляют сигнатуры для пакетов, классов, методов и полей. Этой информации достаточно для компиляции или выполнения, однако она значительно меньше по объему, чем первоначальный исходный код. Для того чтобы упростить просмотр и отладку двоичных библиотек, разработан механизм, позволяющий связывать исходный файл JAR (или ZIP) с двоичным файлом JAR.

Почему все ресурсы дублируются в выходной папке (например, bin)?

Если в проекте Java применяются папки исходного кода, то во время компиляции исходных файлов в проекте компилятор Java копирует в выходную папку также ресурсы, не относящиеся к Java, чтобы они были доступны в пути к классам во время выполнения программы. Если вы не хотите, чтобы определенные ресурсы копировались в расположение вывода, задайте фильтр ресурсов в параметрах компилятора Java: Окно > Параметры > Java > Компилятор > Компоновка

Как предотвратить копирование файлов документации в выходную папку проекта?

Воспользуйтесь папками исходного кода и поместите ресурсы, которые не нужно копировать в выходную папку, в отдельную папку, не указанную в пути к классам. Можно также задать фильтр ресурсов (например, *.doc) в параметрах компилятора Java: Окно > Параметры > Java > Компилятор > Компоновка.

Как создать пакет по умолчанию?

Это не требуется. Файлы в корневой папке папки исходного кода или проекта автоматически считаются находящимися в пакете по умолчанию. Фактически, каждая папка исходного кода может содержать фрагмент пакета по умолчанию.

Что такое рефакторинг?

Рефакторинг - это преобразование синтаксиса программы без изменения ее семантики. JDT поддерживает множество преобразований, описанных в книге Мартина Фаулера (Martin Fowler) Refactoring: Improving the Design of Existing Code, Addison Wesley 1999.

Когда следует применять выбор кода/преобразование кода (F3)?

Когда необходимо найти элемент Java, соответствующий исходному диапазону, с помощью компилятора.

Создается ли информация программы на Java (иерархия типов, объявления, ссылки и т.п.) компоновщиком Java? Обновляется ли она, когда автоматическая компоновка отключена?

Информация программы на Java не зависит от компоновщика Java. Она автоматически обновляется во время внесения изменений в ресурсы и выполнения операций Java. В частности, все функции, предоставляемые инструментами Java (например, иерархии типов, помощник по работе с кодом, поиск), продолжают поддерживаться при отключенной автоматической компоновке; например, при выполнении углубленного рефакторинга, требующего отключения компоновщиков, вы по-прежнему можете пользоваться помощником по работе с кодом, который будет учитывать последние изменения (еще не скомпонованные). За исключением запуска (т.е. выполнения и отладки) программ, единственная функция, которой требуется компоновщик Java, - это вычисление фрагментов кода.

После повторного открытия рабочей среды первая компоновка, происходящая после редактирования исходного файла Java, выполняется дольше обычного. Почему?

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

Я не вижу иерархию типов для своего класса. Что делать?

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

Как отключить "автоматическую компиляцию" и выполнять ее вручную, когда мне это потребуется?

Снимите отметку с флага Компоновать автоматически в окне Opens the Workspace preference page Общие > Рабочая область. Когда вам понадобится выполнить компоновку, нажмите Ctrl+B или выберите Проект > Скомпоновать все в строке меню.

Подсказка: если вы отключите "автоматическую компиляцию" и выполняете компоновку вручную, рекомендуется также отметить флаг Автоматически сохранять перед компоновкой в окне Opens the Workspace preference page Общие > Рабочая область.

Когда я выбираю метод или поле в панели Схема, в редакторе показан исходный код только этого элемента. Как увидеть исходный код всего файла?

В панели инструментов есть кнопка Показывать только исходный код выбранного элемента. Все, что нужно сделать, - это отжать ее.

Можно ли вкладывать друг в друга папки исходного кода?

Да, с помощью исключающих фильтров можно создавать вложенные папки исходного кода.

Можно ли создать отдельную выходную папку для каждой папки исходного кода?

Да. Для этого отметьте переключатель Разрешить выходные папки для папок исходного кода на странице свойств Путь компоновки Java > Исходный код проекта Java.

Может ли выходная папка или папка исходного кода находиться вне рабочей области?

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

Связанные концепции

Средства разработки на Java (JDT)

Связанные справочники

Страница Путь компоновки Java
Глоссарий JDT