Установка пути к классам Java для компоновки

В этом разделе описывается настройка пути к классам Java для компоновки (пути компоновки).   Путь компоновки - это путь к классам, который используется для компоновки проекта Java (IJavaProject).

Путь к классам - это собой простой массив записей путей к классам (IClassPathEntry), который описывает доступные типы.  Типы могут указываться как в исходном, так и в двоичном виде, а последовательность записей в пути компоновки определяет порядок поиска типов для их разрешения (преобразования) во время компоновки.

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

При обсуждении пути компоновки не рассматривается динамический путь Java, который может быть определен отдельно от пути компоновки.  (Динамический путь к классам обсуждается в разделе Выполнение кода Java).

Изменение пути компоновки

Путь компоновки проекта можно изменить программным образом с помощью setRawClasspath в соответствующем элементе проекта Java.  Следующий фрагмент кода задает путь к классам для ресурса проекта:

	IProject project = ... // получить некоторый ресурс проекта
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

(Примечание:  Термин "raw" (исходный, необработанный), относящийся к пути к классу, подчеркивает тот факт, что никакие переменные, применяемые для описания расположений записи, не должны преобразовываться.)

Путь компоновки Java сохраняется в файле с именем '.classpath' в дереве файлов проекта.  Этот файл предоставляет возможность распределения параметров путей компоновки Java через некоторое хранилище исходного кода. Во избежание повреждения этого файла его нельзя изменять вручную.

Записи путей к классам

Записи путей к классам можно задать с помощью методов фабрики, определенных в JavaCore.  Ниже перечислены объекты, на которые может указывать запись пути к классам:

Шаблоны исключения

Для исходной записи путей к классам можно задать шаблон исключения, который позволяет сделать некоторые ресурсы в папке исходного кода невидимыми для пути к классам.  Использование шаблона позволяет отфильтровать определенные части дерева ресурсов.  Каждый путь шаблона исключения задается относительно записи пути к классам и использует механизм отбора, подобный Ant.  Шаблоны исключения могут использоваться для задания вложенных папок исходного кода, до тех пор пока внутренний шаблон не будет отменен внешним шаблоном.

Дополнительная информация о шаблонах исключений приведена в разделе getExclusionPatterns().

Перед тем как определять, находится ли отдельный ресурс в пути к классам, метод isOnClasspath API проекта Java проверяет и шаблоны включения, и шаблоны исключения.

Замечания:

Шаблоны включения

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

Синтаксис и семантика шаблонов путей обсуждаются в разделе getExclusionPatterns(). Отсутствие каких бы то ни было шаблонов включения семантически эквивалентно явному шаблону включения **.

Перед тем как определять, находится ли отдельный ресурс в пути к классам, метод isOnClasspath API проекта Java проверяет и шаблоны включения, и шаблоны исключения.

Примеры:

Вычисление путей к классам

Поскольку переменные и контейнеры путей к классам позволяют динамически вычислять записи путей к классам для связывания, то API пути к классам делает различие между непреобразованным и преобразованным путями.   Непреобразованный путь к классам - это путь, первоначально заданный в проекте с помощью метода setRawClasspath, который затем можно получить для проекта с помощью метода getRawClasspath.   Вычисленный (преобразованный) путь к классам можно получить с помощью метода getResolvedClasspath. Эта операция запускает инициализацию любых переменных и контейнеров, необходимых для вычисления пути к классам.  Многие операции модели Java неявно вызывают вычисление пути компоновки Java.  Например, вычисление корневых фрагментов пакетов проекта требует вычисления пути компоновки.