Classpath

De la Viquipèdia, l'enciclopèdia lliure

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]

  1. 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).
  2. classes d'extensió: paquets que es troben al directori d'extensió del Java Runtime Environment o JDK, jre/lib/ext/
  3. 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]

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