Definindo o Caminho de Construção Java

Esta seção descreve como definir o caminho de construção Java.  O caminho de construção é o classpath utilizado para construção de um produto Java(IJavaProject).

Um classpath é simplesmente uma matriz de entradas de classpath (IClassPathEntry) que descreve os tipos disponíveis.  Os tipos podem aparecer no formato de origem ou binário e a seqüência das entradas no caminho define a ordem de consulta para resolução de tipos durante uma construção.

O caminho de construção Java é refletido na estrutura de um elemento de projeto Java.  Você pode consultar um projeto para obter suas raízes de fragmentos do pacote(IPackageFragmentRoot).  Cada entrada do classpath faz o mapeamento até uma ou mais raízes de fragmentos do pacote e cada uma delas contém, além disso, um conjunto de fragmentos do pacote.

Esta discussão sobre o caminho de construção não envolve o caminho de tempo de execução Java, o qual pode ser definido separadamente do caminho de construção.  (Consulte Executando código Java para obter uma discussão sobre o classpath de tempo de execução.

Alterando o Caminho de Construção

É possível alterar, através de programação, o caminho de construção de um projeto setRawClasspath no elemento Java do projeto correspondente.  O código a seguir define o classpath para um recurso do projeto:

	IProject project = ... // obter algum recurso do projeto
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

(Nota:  O termo "raw" classpath é utilizado para enfatizar que variáveis utilizadas para descrever localizações de entrada não foram resolvidas.)

O caminho de construção Java permanece em um arquivo chamado '.classpath' na estrutura de arquivos do projeto.  A finalidade deste arquivo é fornecer uma maneira para compartilhar as definições do caminho de construção Java com outros através de algum repositório de código fonte.Especificamente, esse arquivo não deve ser editado manualmente, pois poderá ser danificado.

Entradas de Classpath

As entradas de classpath podem ser definidas com os métodos de fábrica definidos em JavaCore.  As entradas de classpath podem fazer referência a qualquer um dos seguintes:

Padrões de Exclusão

Um padrão de exclusão pode ser atribuído a uma entrada de origem do classpath, o que impede que determinados recursos em uma pasta de origem fiquem visíveis no classpath.  O uso de um padrão permite que partes especificadas da árvore de recursos sejam removidas.  Cada caminho de padrão exclusivo é correspondente à entrada do classpath e utiliza um mecanismo de padrão semelhante ao Ant.  Os padrões de exclusão pode ser utilizados para especificar pastas de origem aninhadas contanto que o padrão externo exclua o padrão interno.

Consulte getExclusionPatterns() para obter detalhes adicionais sobre padrões de exclusão.

A API do projeto Java isOnClasspath verifica os padrões de inclusão e exclusão antes de determinar se um recurso específico está no caminho de classe.

Comentários:

Padrões de Inclusão

Um padrão de inclusão, que define explicitamente os recursos a serem visíveis no caminho de classe, também pode ser designado a uma origem de caminho de classe.   Quando nenhum padrão de inclusão está especificado, a entrada de origem inclui todos os arquivos relevantes na árvore de recursos enraizada nesse caminho de entrada de origem. A especificação de um ou mais padrões de inclusão significa que apenas as partes especificadas da árvore de recursos devem ser incluídas. Cada caminho especificado deve ser um caminho relativo e será interpretado em relação a esse caminho de entrada de origem. Os padrões de arquivos fazem distinção entre maiúsculas e minúsculas. Um arquivo que corresponda a um ou mais desses padrões será incluído na raiz do fragmento do pacote correspondente, a menos que seja excluído por um ou mais desses padrões de exclusão de entrada.

Consulte getExclusionPatterns() para obter uma discussão da sintaxe e da semântica de padrões de caminho. A ausência de quaisquer padrões de inclusão é semanticamente equivalente ao padrão de inclusão explícito **.

A API do projeto Java isOnClasspath verifica os padrões de inclusão e exclusão antes de determinar se um recurso específico está no caminho de classe.

Exemplos:

Resolução do Classpath

Como as variáveis e contêiners de classpath permitem definir entradas de classpath ligadas dinamicamente, a API do classpath faz distinção entre um classpath não processado e um classpath resolvido.   O classpath não processado é aquele definido originalmente no projeto Java utilizando setRawClasspath, e que pode ser consultado posteriormente solicitando getRawClasspath ao projeto.  O classpath resolvido pode ser consultado utilizando getResolvedClasspath. Esta operação aciona a inicialização das variáveis e contêiners necessários para resolver o classpath.  Várias operações do Modelo Java fazem com o caminho de construção Java seja resolvido implicitamente.  Por exemplo, calcular as raízes de fragmento do pacote de um projeto requer a resolução do caminho de construção.