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.[1]
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.[2]
La màquina virtual cerca i carrega classes en aquest ordre: [3]
- 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).[4]
Configuració del camí per executar programes Java
[modifica]Subministrament com a argument d'aplicació
[modifica]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
[modifica]- ↑ «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].