Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Il CLASSPATH in Linux

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    167

    Il CLASSPATH in Linux

    Salve,
    molti di voi immagino che, non appena leggeranno il subject, penseranno "ecco un altro che non usa la funzione search"... sbagliato! (O almeno spero :P)
    Ricercando messaggi passati sul forum sono riuscito a prendere spunto per impostare correttamente il PATH dentro etc/profile.
    Ho ripetuto le stesse righe di codice per il CLASSPATH ed in effetti me lo vede... se in shell scrivo "$CLASSPATH" mi restituisce il suo effettivo percorso.
    Fin qui tutto bene: la corretta impostazione di questi due benedetti parametri è anche confermata dalla corretta compilazione di una classe che contiene dei package personali. Il problema che non sono riuscito proprio a risolvere è quando uso l'interprete java... mi restituisce un errore del tipo NoClassDefFoundError...
    L'impostazione del CLASSPATH è giusto, le classi importate sono presenti lì dentro e quindi non si tratta di un problema ovvio.
    Il java invece mi interpreta correttamente la classe se sposto il file .class nel CLASSPATH... non riesco a capirne il motivo.
    Per completezza: uso la Mandrake 9 con JDK 1.4.1

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Come ben sai la variabile PATH fa riferimento agli eseguibili java, mentre il CLASSPATH punta alle classi.

    Prova ad aggiungere al tuo classpath la directory corrente "./", così potrai eseguire comodamente le tue classi in qualunque directory.

    Comunque ti consiglio di riguardarti l'utilizzo delle opzioni della linea di comando di java, javac, ecc. perchè ti saranno sempre di grande aiuto.

    Ciao !

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    167
    Originariamente inviato da Sergio Pedone
    Come ben sai la variabile PATH fa riferimento agli eseguibili java, mentre il CLASSPATH punta alle classi.

    Prova ad aggiungere al tuo classpath la directory corrente "./", così potrai eseguire comodamente le tue classi in qualunque directory.

    Comunque ti consiglio di riguardarti l'utilizzo delle opzioni della linea di comando di java, javac, ecc. perchè ti saranno sempre di grande aiuto.

    Ciao !
    Perché dovrei mettere la directory corrente nel CLASSPATH? Non è che non sono d'accordo, non ho proprio capito il motivo. Le mie classi stanno in home/maurizio e questo percorso lo ho impostato nel classpath, che poi coincide anche con l'altra variabile d'ambiente home, ma questo non dovrebbe avere importanza. Il javac mi compila la classe tranquillamente, in qualsiasi posizione la metta. Il java invece no, mi dà quell'errore strambo... tipico di quando non esiste il file class che gli dico di eseguire fra l'altro.
    Magari mi sto perdendo in un bicchiere d'acqua, anzi sarà sicuramente così, ma tieni conto che ieri ho imparato da come fare la parentesi graffa in linux per finire con le variabili d'ambiente ^_^

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Sergio ha ragione, l'interprete java va a prendere come percorso di ricerca il percorso impostato nel CLASSPATH, se non trova nulla di specificato assume come percoso la directory corrente. Quindi fino a che non specifichi un CLASSPATH particolare tutto funziona bene, nel momento in cui decidi di farlo devi includere TUTTE le directory in cui l'interprete deve cercare i file .class da eseguire, e quindi fra le tante devi anche specificare la directory corrente, e cioe' ./
    Questo non solo sotto linux.
    Se vuoi fare una piccola verifica prova ad eseguire il tuo file con il comando
    java -cp ./ nomeFile
    il parametro -cp segnala all'interpretere il percorso per la sola sessione, nel qual caso la directory corrente ./
    Chiaro?
    Ciao,
    Lorenzo

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    167
    Ho risolto ogni problema grazie al suggerimento che mi avevate dato di settare per prima la directory corrente nel CLASSPATH, grazie a tutti! :-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.