PERCORSO DI CLASSE: CLASSPATH è una variabile di ambiente utilizzata dall'applicazione ClassLoader per individuare e caricare i file .class. Il CLASSPATH definisce il percorso per trovare classi di terze parti e definite dall'utente che non sono estensioni o parte della piattaforma Java. Includere tutte le directory che contengono file .class e file JAR quando si imposta CLASSPATH.
È necessario impostare CLASSPATH se:
Bharti Jha
- È necessario caricare una classe che non è presente nella directory corrente o in eventuali sottodirectory.
- È necessario caricare una classe che non si trova in una posizione specificata dal meccanismo delle estensioni.
Il CLASSPATH dipende da cosa stai impostando CLASSPATH. Il CLASSPATH ha un nome di directory o un nome di file alla fine. I seguenti punti descrivono quale dovrebbe essere la fine del CLASSPATH.
- Se è un JAR o un file zip, il file contiene file di classe, il CLASSPATH termina con il nome del file zip o JAR.
- Se i file di classe vengono inseriti in un pacchetto senza nome, CLASSPATH termina con la directory che contiene i file di classe.
- Se i file di classe vengono inseriti in un pacchetto denominato, CLASSPATH termina con la directory che contiene il pacchetto root nel nome completo del pacchetto, ovvero il primo pacchetto nel nome completo del pacchetto.
Il valore predefinito di CLASSPATH è un punto (.). Significa che è stata cercata l'unica directory corrente. Il valore predefinito di CLASSPATH ha la precedenza quando si imposta la variabile CLASSPATH o si utilizza il comando -classpath (in breve -cp). Inserisci un punto (.) nella nuova impostazione se desideri includere la directory corrente nel percorso di ricerca.
Se CLASSPATH trova un file di classe presente nella directory corrente, caricherà la classe e la utilizzerà, indipendentemente dallo stesso nome della classe presente in un'altra directory inclusa anch'essa nel CLASSPATH.
Se desideri impostare più percorsi di classe, devi separare ciascun CLASSPATH con un punto e virgola (;).
Le applicazioni di terze parti (MySQL e Oracle) che utilizzano la JVM possono modificare la variabile di ambiente CLASSPATH per includere le librerie che utilizzano. Le classi possono essere memorizzate in directory o file di archivio. Le classi della piattaforma Java sono memorizzate in rt.jar.
Esistono due modi per impostare CLASSPATH: tramite il prompt dei comandi o impostando la variabile di ambiente.
Vediamo come impostare CLASSPATH del database MySQL:
Passo 1: Fare clic sul pulsante Windows e scegliere Pannello di controllo. Seleziona Sistema.
Passo 2: Clicca su Impostazioni avanzate di sistema .
Passaggio 3: Si aprirà una finestra di dialogo. Fare clic su Variabili d'ambiente.
nome di
Passaggio 4: Se il CLASSPATH esiste già in Variabili di sistema, fare clic sul pulsante Modifica quindi inserire un punto e virgola (;) alla fine. Incolla il percorso del file Java.jar del connettore MySQL.
Se il CLASSPATH non esiste in Variabili di sistema, fare clic sul pulsante Nuovo e digitare il nome della variabile come CLASSPATH e il valore della variabile come C:ProgrammiJavajre1.8MySQL-Connector Java.jar;.;
Ricorda: metti ;.; alla fine del CLASSPATH.
Differenza tra PATH e CLASSPATH
SENTIERO | PERCORSO DI CLASSE |
---|---|
PATH è una variabile d'ambiente. | CLASSPATH è anche una variabile d'ambiente. |
Viene utilizzato dal sistema operativo per trovare i file eseguibili (.exe). | Viene utilizzato da Application ClassLoader per individuare il file .class. |
È necessario includere la directory che contiene i file .exe. | È necessario includere tutte le directory che contengono file .class e JAR. |
La variabile di ambiente PATH una volta impostata, non può essere sovrascritta. | La variabile di ambiente CLASSPATH può essere sovrascritta utilizzando l'opzione della riga di comando -cp o -CLASSPATH sia per il comando javac che per quello java. |
Come impostare CLASSPATH in Windows utilizzando il prompt dei comandi
Digita il seguente comando nel prompt dei comandi e premi Invio.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
Nel comando precedente, The set è un comando DOS interno che consente all'utente di modificare il valore della variabile. CLASSPATH è un nome di variabile. La variabile racchiusa nel segno di percentuale (%) è una variabile di ambiente esistente. Il punto e virgola è un separatore e dopo (;) c'è il PERCORSO del file rt.jar.
array di ordinamento in Java
Come funziona la cartella ext in Java
La directory ext funziona un po' come CLASSPATH. La directory ext fa parte del meccanismo di caricamento della classe. Le classi disponibili all'interno dei JAR nella directory ext sono disponibili per le applicazioni Java.
La seguente tabella dimostra la differenza chiave tra CLASSPATH e il meccanismo di estensione:
Caratteristiche | PERCORSO DI CLASSE | Meccanismo di estensione |
---|---|---|
Ordine di caricamento delle lezioni | CLASSPATH viene caricato dopo il bootstrap e il caricamento dell'estensione. | ext viene caricato dopo il caricamento del bootstrap ma prima del caricamento del CLASSPATH. |
Scopo | È un'applicazione specifica. Tutti i JRE sull'host sono la variabile di ambiente CLASSPATH. | Tutte le JVM sono in esecuzione in java.ext.dir JRE specifiche. |
Nome del pacchetto | java.class.path viene utilizzato per trovare le directory e gli archivi JAR contenenti file di classe. | java.ext.dirs viene utilizzato per specificare dove il meccanismo di estensione carica le classi. |
Specifica | È specificato dal nome, inclusa l'estensione.jar e la directory contenente i file .class. | Vengono caricati tutti i file JAR nelle directory specificate. |
Il meccanismo preleverà tutti i file .jar dalla directory dell'estensione anche se il file non ha l'estensione .jar. L'implementazione di ciò è che se si può cambiare il nome di un jar inserito in una directory classpath per avere un'estensione diversa da .jar. Il carattere jolly (*) non lo raccoglie. Questa tecnica non funzionerà con la directory dell'estensione.
Capiamo il processo di esecuzione attraverso un esempio.
A.java
public class A { public String toString() { return 'hello'; } }
B.java
public class B { public static void main(final String[] args) { System.out.println(new A()); } }
Compilare il file A.java. archivieremo il file A.class compilato in A.jar. Posiziona questo file JAR in un'altra directory rispetto al file B.class compilato.
Per dimostrare l'uso del classpath, inseriamo il file A.jar in una directory C:JavaPrograms e accederemo a quel JAR tramite il carattere jolly (*) affinché B lo utilizzi.
Abbiamo scoperto che B può ancora caricare A.class mentre lo avevamo cancellato dalla directory corrente. Il launcher Java è stato cercato esplicitamente C:JavaProgram. È anche possibile caricare la classe senza la sua presenza nella stessa directory e senza la specifica esplicita del percorso di classe.
Viene spesso definito un vantaggio dell'utilizzo del meccanismo di estensione perché tutte le applicazioni che utilizzano JRE possono vedere le stesse classi senza la necessità di specificarle esplicitamente nel classpath.
Cosa succede se cambiamo il nome di A.jar in A.backup nella stessa directory con riferimento a CLASSPATH. Quando si esegue la stessa operazione viene riscontrato un errore NoClassDefFoundError perché il riferimento CLASSPATH non ha l'estensione .jar.
modello di progettazione di fabbrica