Settaggio del classpath

3 risposte [Ultimo contenuto]
Ritratto di Claudio
Claudio
(Guru)
Offline
Guru
Iscritto: 05/09/2007
Messaggi: 1100

Salve,
avrei bisogno di aggiungere un classpath in modo da poter seguire i programmi direttamente in una cartella senza dover impostare tutto il percorso ogni volta.
Per la verità, aggiungere il classpath, mi serve per richiamare alcune librerie java che sviluppo che si trovano nelle sottocartelle della cartella /home/claudio/workspace senza includere ogni volta i file class direttamente nel package che sto sviluppando.
Avevo letto che avrei dovuto aggiungere alla fine del file /home/claudio/.bashrc le seguenti righe

CLASSPATH=/home/claudio/workspace/:$CLASSPATH
export CLASSPATH

ma sembra che non funzioni.
Infatti ho cerrcato di lanciare un programma direttamente dando il comando
./nomeprogramma
senza successo (file o directory inesistente)
Grazie a tutti

Notebook Hp Pavilvion dv6 i5 amd64, 4 GB Ram, scheda grafica nVidia Corporation GT216 [GeForce GT 320M] (rev a2)
Notebook Acer Asprire 5755G amd64, 8 GB Ram, scheda grafica nVidia GeForce GT 540M
Debian testing kde

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Mi sembra che tu abbia impostato CLASSPATH correttamente, ma poi lo stai usando nel modo sbagliato. Questa variabile dice all'interprete java dove andare a prendere le classi che gli servono. Ad esempio, se hai creato la classe pippo.class e l'hai messa in /home/claudio/workspace, allora i seguenti comandi sono (più o meno) equivalenti:

java /home/claudio/workspace/pippo.class
cd /home/claudio/workspace && java pippo.class
java -classpath /home/claudio/workspace pippo.class

Impostando la variabile CLASSPATH ti eviti di doverla specificare tra le opzioni di java:
export CLASSPATH=/home/claudio/workspace
java pippo.class

Ben diverso da quelle che, se intuisco bene, vorresti tu, cioè poter scrivere pippo in qualsiasi directory e far fare alla shell tutto sto ragionamento:

  • non trovo un file chiamato pippo in tutto il PATH...
  • allora provo a cercarlo in CLASSPATH...
  • l'ho trovato ma non è un eseguibile, è una classe java...
  • allora lancio l'interprete java e passo il nome del file come argomento.
Per fare questo credo tu abbia bisogno di binfmt-support, ma non saprei darti maggiori dettagli, al momento.

Ritratto di Claudio
Claudio
(Guru)
Offline
Guru
Iscritto: 05/09/2007
Messaggi: 1100

Beh, il classpath, se non erro, funziona così in windows. Ogni programma che si trova in una directory del classpath può essere richiamata da una qualsiasi cartella sel sistema operativo senza stare a specificare il percorso effettivo dove risiede il file.
Pensavo avesse un funzionamento simile

Notebook Hp Pavilvion dv6 i5 amd64, 4 GB Ram, scheda grafica nVidia Corporation GT216 [GeForce GT 320M] (rev a2)
Notebook Acer Asprire 5755G amd64, 8 GB Ram, scheda grafica nVidia GeForce GT 540M
Debian testing kde

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Esatto. Funziona così in Windows e in Linux, nessuna differenza. Come dici tu: ti evita di dover specificare il percorso dove risiede il file. Quello che non ti evita, né in Windows, né in Linux, è di specificare l'interprete java.

Anche in Windows, con CLASSPATH impostato a qualcosa tipo "C:\Documents and Settings\claudio\My Documents\cartella", dovresti lanciare il tuo programma con

> java pippo.class
non con
> pippo.class