Archiviazioni mensili: aprile 2008

Java: classpath malefico

Quanti di voi, alle prime armi con Java senza utilizzare alcun IDE, non hanno mai avuto qualche problema in fase di compilazione di un programma facente uso di package “artigianali”, cioè creati da voi stessi? Non molti, suppongo.
In questo post spiego brevemente l’utilizzo dell’opzione classpath da passare sia al compilatore che all’interprete Java. Le stesse considerazioni, ovvero gli stessi valori, si applicano alla variabile di ambiente CLASSPATH, se preferite usare quella.

Supponiamo di avere tutti i nostri package personali nella directory /programmazione/java/mypackages/. Come ben sappiamo, i nomi dei package dovranno essere tali da rispecchiare la gerarchia di sottodirectory in cui sono memorizzati. Ad esempio le classi appartenenti al package di nome foo.bar (che conterranno quindi la direttiva package foo.bar;) dovranno essere memorizzate nella sottodirectory bar della directory foo; per come ci siamo organizzati noi, la directory foo sarà a sua volta conenuta in /programmazione/java/mypackages/. Se le classi in questione non contengono riferimenti ad altri package locali, la loro compilazione filerà liscia senza passare alcuna opzione al compilatore.

Dopo averle compilate, supponiamo di scrivere l’applicazione Test.java che fa uso delle classi del package foo.bar (e conterrà quindi la direttiva import foo.bar.*;) e di salvarla nella directory /programmazione/java; affinché la compilazione dell’applicazione abbia successo, è necessario comunicare al compilatore in quale directory reperire il package. Quindi il comando di compilazione sarà di questo tipo:

javac -classpath /programmazione/java/mypackages/ Test.java

Ovviamente, se includiamo anche package memorizzati in altre directory, dovremo cambiare l’opzione classpath di conseguenza, aggiungendo anche gli altri path separati dal carattere : (duepunti).

La cosa curiosa è che l’opzione classpath sarà necessaria anche per l’esecuzione dell’applicazione Test, ma con una leggera modifica: dovremo aggiungere al classpath anche la directory corrente. Il comando per eseguire l’applicazione test, allora, sarà:

java -classpath .:/programmazione/java/mypackages Test

Per il momento è tutto. Man mano che andrò avanti con lo studio di questo assurdo linguaggio, pubblicherò le difficoltà incontrate e le soluzioni applicate.

Ciao da Gica :-)

Iscriviti

Get every new post delivered to your Inbox.