# Classpath

Classpath és un paràmetre de la màquina virtual Java o del compilador Java que especifica la ubicació de les classes i paquets definits per l'usuari. El paràmetre es pot establir a la línia d'ordres o mitjançant una variable d'entorn.
Visió general i arquitectura
De manera semblant al comportament de càrrega dinàmica clàssica, quan s'executa programes Java, la màquina virtual de Java troba i carrega classes de manera mandrosa (carrega el bytecode d'una classe només quan la classe s'utilitza per primera vegada). El classpath indica a Java on buscar al sistema de fitxers els fitxers que defineixen aquestes classes.
La màquina virtual cerca i carrega classes en aquest ordre:
* classes bootstrap: les classes que són fonamentals per a la plataforma Java (que comprenen les classes públiques de la Java Class Library i les classes privades que són necessàries perquè aquesta biblioteca sigui funcional).
* classes d'extensió: paquets que es troben al directori d'extensió del Java Runtime Environment o JDK, jre/lib/ext/
* paquets i biblioteques definits per l'usuari
Per defecte, només els paquets de l'API estàndard de JDK i els paquets d'extensió són accessibles sense necessitat d'establir on trobar-los. El camí de tots els paquets i biblioteques definits per l'usuari s'ha d'establir a la línia d'ordres (o al manifest associat al fitxer Jar que conté les classes).

## Configuració del camí per executar programes Java
### Subministrament com a argument d'aplicació

Suposem que tenim un paquet anomenat org.mypackage que conté les classes:
* HelloWorld (classe principal)
* Classe de suport
* UtilClass
i els fitxers que defineixen aquest paquet s'emmagatzemen físicament al directori D:\myprogram (a Windows) o /home/user/myprogram (a Linux).
L'estructura del fitxer té aquest aspecte:
| Microsoft Windows | Linux |
| D:\myprogram\ | ---> org\ | ---> mypackage\ | ---> HelloWorld.class ---> SupportClass.class ---> UtilClass.class | /home/user/myprogram/ | ---> org/ | ---> mypackage/ | ---> HelloWorld.class ---> SupportClass.class ---> UtilClass.class |
Quan invoquem Java, especifiquem el nom de l'aplicació a executar: org.mypackage. Hola món. Tanmateix, també hem de dir a Java on buscar els fitxers i directoris que defineixen el nostre paquet. Per tant, per iniciar el programa, utilitzem l'ordre següent:
| Microsoft Windows | Linux |
| java -classpath D:\myprogram org.mypackage.HelloWorld | java -cp /home/user/myprogram org.mypackage.HelloWorld |
on:
* java és el llançador de temps d'execució de Java, un tipus d'eina SDK (una eina de línia d'ordres, com ara javac, javadoc o apt)
* -classpath D:\myprogram estableix el camí dels paquets utilitzats al programa (a Linux, -cp /home/user/myprogram) i
* org.mypackage. Hola món és el nom de la classe principal

## Referències

* ↑ «Understanding Java’s Classpath vs. Build Path» (en anglès). [Consulta: 29 desembre 2023].
* ↑ «CLASSPATH in Java» (en anglès americà), 05-11-2017. [Consulta: 29 desembre 2023].
* ↑ Gupta, Lokesh. «How to set CLASSPATH in Java» (en anglès americà), 08-07-2016. [Consulta: 29 desembre 2023].
* ↑ «PATH and CLASSPATH (The Java™ Tutorials > Essential Java Classes > The Platform Environment)» (en anglès). [Consulta: 29 desembre 2023].