Définition du chemin de compilation Java

Cette section explique comment définir le chemin de compilation Java. Ce chemin de compilation est en fait le chemin d'accès aux classes, utilisé pour la compilation d'un projet Java (IJavaProject). 

Un chemin de classe est tout simplement un tableau d'entrées de chemin d'accès aux classes (IClassPathEntry) décrivant les types disponibles. Les types peuvent apparaître sous forme source ou binaire et l'ordre des entrées dans le chemin définit l'ordre de recherche pour résoudre les types au cours d'une compilation.

Le chemin de compilation Java est reflété dans la structure d'un élément de projet Java. Vous pouvez rechercher un projet pour ses racines de fragments de package (IPackageFragmentRoot). Chaque entrée du chemin de classe mappe vers une ou plusieurs racines de fragments de package, chacune contenant un ensemble de fragments de package.

Cette discussion sur le chemin de compilation n'implique pas le chemin d'exécution Java qui peut être défini séparément à partir du chemin de compilation. Pour plus d'informations sur le chemin de classe d'exécution, reportez-vous à la rubriques Exécution du code Java.

Modification du chemin de compilation

Il est possible de modifier le chemin de compilation d'un projet à l'aide d'un programme en utilisant setRawClasspath sur l'élément Java du projet correspondant. Le code suivant définit le chemin de classe d'une ressource de projet :

	IProject project = ... // get some project resource
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

Remarque : L'utilisation du terme chemin de classe "brut" (raw) est destinée à mettre l'accent sur le fait que des variables utilisées pour décrire les emplacements des entrées n'ont pas été résolues.

Le chemin de compilation Java est conservé dans un fichier appelé .classpath dans la structure de fichiers du projet. Ce fichier permet de partager les paramètres du chemin de compilation Java avec d'autres par le biais d'un référentiel de code source. N'éditez pas ce fichier manuellement car il risque d'être corrompu.

Entrées de chemin de classe

Les entrées du chemin de classe peuvent être définies à l'aide des méthodes de fabrique définies sur JavaCore. Les entrées du chemin de classe peuvent faire référence à l'un des éléments suivants :

Schémas d'exclusion

Un schéma d'exclusion peut être affecté à une entrée source de chemin de classe, empêchant certaines ressources d'un dossier source d'être visibles dans le chemin de classe. L'utilisation d'un schéma permet de filtrer les parties spécifiées de l'arborescence de ressources. Chaque chemin de schéma d'exclusion est relatif à l'entrée du chemin de classe et utilise un mécanisme similaire à Ant. Les schémas d'exclusion peuvent être utilisés pour spécifier les dossiers source imbriqués tant que le schéma externe exclut le schéma interne.

Pour plus de détails sur les schémas d'exclusion, reportez-vous à getExclusionPatterns().

L'API de projet Java isOnClasspath vérifie les schémas d'exclusion avant de déterminer si une ressource particulière se trouve dans le chemin de classe.

Résolution du chemin de classe

Comme les variables et les conteneurs de chemin de classe permettent de définir de façon dynamique les entrées de chemin de classe liées, l'API du chemin de classe fait une distinction entre un chemin de classe but et un chemin de classe résolu. Le chemin de classe brut est le chemin défini à l'origine dans le projet Java à l'aide de setRawClasspath, qui peut être interrogé en demandant getRawClasspath au projet. Le chemin de classe résolu peut être demandé à l'aide de getResolvedClasspath. Cette opération déclenche l'initialisation des variables et des conteneurs nécessaires pour la résolution du chemin de classe. De nombreuses opérations liées au modèle Java entraînent la résolution du chemin de compilation Java. Par exemple, le calcul des racines de fragments de package d'un projet nécessite que le chemin de compilation soit résolu.

Copyright IBM Corporation and others 2000, 2003. All Rights Reserved.