Impostazione del percorso di generazione Java

In questa sezione viene descritto come impostare il percorso di generazione Java. Il percorso di generazione è il percorso classi utilizzato per la creazione di un progetto Java (IJavaProject).

Un percorso classi non è altro che una matrice di voci del percorso classi (IClassPathEntry) che descrivono i tipi disponibili. I tipi possono essere visualizzati in formato di origine o in formato binario e l'ordine delle voci nel percorso definisce l'ordine di ricerca per la risoluzione dei tipi durante una generazione.

Il percorso di generazione Java si riflette nella struttura di un elemento del progetto Java. È possibile interrogare un progetto per le relative radici del frammento di pacchetto (IPackageFragmentRoot). Ciascuna voce del percorso di classi esegue l'associazione a una o più radici del frammento di pacchetto, ciascuna contenente un insieme di frammenti di pacchetto.

Questo aspetto del percorso di generazione non coinvolge il percorso di runtime Java, che può essere definito separatamente dal percorso di generazione. (Per il percorso classi di runtime, consultare la sezione Esecuzione di un codice Java).

Modifica del percorso di generazione

È possibile modificare in modo programmatico il percorso di generazione di un progetto utilizzando setRawClasspath sull'elemento Java del progetto corrispondente.  Il codice di seguito riportato imposta il percorso classi per una risorsa di progetto:

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

(Nota:  l'utilizzo del termine percorso classi "di base" ha lo scopo di enfatizzare il fatto che tutte le variabili utilizzate per descrivere i percorsi di immissione non sono state risolte).

Il percorso di generazione Java viene reso permanente in un file denominato '.classpath' nella struttura del file del progetto. Lo scopo di tale file è fornire una modalità di condivisione delle impostazioni del percorso di generazione Java mediante repository del codice di origine. In particolare, questo file non va modificato manualmente, in quanto potrebbe risultarne danneggiato.

Voci del percorso classi

È possibile definire le voci del percorso classi utilizzando i metodi factory definiti in JavaCore. Le voci del percorso classi possono fare riferimento a uno degli elementi di seguito riportati:

Modelli di esclusione

Ad una voce di origine del percorso classi può essere assegnato un modello di esclusione, che impedisce ad alcune risorse di una cartella di origine di essere visibili nel percorso classi. L'utilizzo di un modello consente alle parti specificate della struttura risorse di essere escluse tramite filtro. Il percorso di ciascun modello di esclusione è relativo alla voce del percorso classi e utilizza un meccanismo di modello simile a Ant.  I modelli di esclusione possono essere utilizzati per specificare cartelle di origine nidificate fino a quando il modello esterno esclude il modello interno.

Per i dettagli sui modelli di esclusione, vedere getExclusionPatterns().

L'API del progetto Java isOnClasspath verifica i modelli di inclusione ed esclusione prima di determinare se una particolare risorsa si trova nel percorso classi.

Note:

Modelli di inclusione

Ad una voce di origine del percorso classi può essere assegnato un modello di inclusione, che definisce le risorse che devono essere visibili sul percorso classi.  Quando non è specificato alcun modello di inclusione, la voce di origine include tutti i file rilevanti nella struttura ad albero delle risorse con origine nel percorso di questa voce di origine. Se si specificano uno o più modelli di inclusione, solo le parti specificate della struttura ad albero delle risorse verranno incluse. Ciascun percorso specificato deve essere un percorso relativo e verrà interpretato come tale per il percorso di questa voce di origine. I modelli di file sono sensibili al maiuscolo/minuscolo. Un file associato a uno di questi modelli viene incluso nell'elemento principale del frammento di pacchetto a meno che non venga escluso da uno o più modelli di esclusione di questa voce.

Per una discussione sulla sintassi e sulla semantica dei modelli del percorso, vedere getExclusionPatterns(). L'assenza di modelli di inclusione equivale semanticamente al modello di inclusione esplicito **.

L'API del progetto Java isOnClasspath verifica i modelli di inclusione ed esclusione prima di determinare se una particolare risorsa si trova nel percorso classi.

Esempi:

Risoluzione del percorso classi

Poiché le variabili e i contenitori del percorso classi consentono di definire dinamicamente le voci del percorso classi collegate, l'API del percorso classi esegue una distinzione tra un percorso classi di base e un percorso classi risolto.  Il percorso classi di base è l'unico impostato originariamente sul progetto Java mediante setRawClasspath, e può essere ulteriormente sottoposto a query mediante la richiesta di getRawClasspath al progetto. Il percorso classi risolto può essere sottoposto a query mediante getResolvedClasspath. Questa operazione attiva l'inizializzazione delle variabili e dei contenitori necessari alla risoluzione del percorso classi. Molte operazioni del modello Java determinano implicitamente la risoluzione del percorso di generazione Java. Ad esempio, l'elaborazione delle radici del frammento di pacchetto di un progetto richiede la risoluzione del percorso di generazione.