logo

Com configurar CLASSPATH a Java

CLASSPATH: CLASSPATH és una variable d'entorn que l'aplicació ClassLoader utilitza per localitzar i carregar els fitxers .class. CLASSPATH defineix el camí, per trobar classes de tercers i definides per l'usuari que no siguin extensions ni formen part de la plataforma Java. Incloeu tots els directoris que contenen fitxers .class i fitxers JAR quan configureu el CLASSPATH.

Heu de configurar el CLASSPATH si:

munt d'ordenació
  • Heu de carregar una classe que no estigui present al directori actual o cap subdirectori.
  • Heu de carregar una classe que no es troba en una ubicació especificada pel mecanisme d'extensions.

El CLASSPATH depèn del que esteu configurant el CLASSPATH. El CLASSPATH té un nom de directori o de fitxer al final. Els punts següents descriuen quin hauria de ser el final del CLASSPATH.

  • Si és un JAR o zip, el fitxer conté fitxers de classe, el CLASSPATH acaba amb el nom del fitxer zip o JAR.
  • Si els fitxers de classe es col·loquen en un paquet sense nom, CLASSPATH acaba amb el directori que conté els fitxers de classe.
  • Si els fitxers de classe es col·loquen en un paquet anomenat, CLASSPATH acaba amb el directori que conté el paquet arrel en el nom complet del paquet, és a dir, el primer paquet amb el nom complet del paquet.

El valor predeterminat de CLASSPATH és un punt (.). Significa l'únic directori actual cercat. El valor predeterminat de CLASSPATH anul·la quan configureu la variable CLASSPATH o utilitzeu l'ordre -classpath (per a -cp curt). Poseu un punt (.) a la nova configuració si voleu incloure el directori actual al camí de cerca.

Si CLASSPATH troba un fitxer de classe que està present al directori actual, carregarà la classe i l'utilitzarà, independentment del mateix nom que la classe es present en un altre directori que també s'inclou a CLASSPATH.

Si voleu establir diversos camins de classe, haureu de separar cada CLASSPATH per un punt i coma (;).

Les aplicacions de tercers (MySQL i Oracle) que utilitzen la JVM poden modificar la variable d'entorn CLASSPATH per incloure les biblioteques que utilitzen. Les classes es poden emmagatzemar en directoris o fitxers d'arxiu. Les classes de la plataforma Java s'emmagatzemen a rt.jar.

Hi ha dues maneres d'establir CLASSPATH: mitjançant el símbol del sistema o configurant la variable d'entorn.

Vegem com configurar CLASSPATH de la base de dades MySQL:

Pas 1: Feu clic al botó de Windows i seleccioneu Tauler de control. Seleccioneu Sistema.

Com configurar CLASSPATH a Java

Pas 2: Fer clic a Configuració avançada del sistema .

Com configurar CLASSPATH a Java

Pas 3: S'obrirà un quadre de diàleg. Feu clic a Variables d'entorn.

matrius bash
Com configurar CLASSPATH a Java

Pas 4: Si el CLASSPATH ja existeix a les variables del sistema, feu clic al botó Edita i després poseu un punt i coma (;) al final. Enganxeu el fitxer Path of MySQL-Connector Java.jar.

Si CLASSPATH no existeix a les variables del sistema, feu clic al botó Nou i escriviu el nom de la variable com a CLASSPATH i el valor de la variable com a C:Arxius de programaJavajre1.8MySQL-Connector Java.jar;.;

Recordeu: Posar ;.; al final del CLASSE.

Com configurar CLASSPATH a Java

Diferència entre PATH i CLASSPATH

CAMÍ CLASSPATH
PATH és una variable d'entorn. CLASSPATH també és una variable d'entorn.
El sistema operatiu l'utilitza per trobar els fitxers executables (.exe). L'utilitza Application ClassLoader per localitzar el fitxer .class.
Heu d'incloure el directori que conté fitxers .exe. Heu d'incloure tots els directoris que contenen fitxers .class i JAR.
La variable d'entorn PATH un cop establerta, no es pot substituir. La variable d'entorn CLASSPATH es pot substituir mitjançant l'opció de línia d'ordres -cp o -CLASSPATH tant a l'ordre javac com a java.

Com configurar CLASSPATH a Windows mitjançant el símbol del sistema

Escriviu l'ordre següent al vostre símbol del sistema i premeu Intro.

 set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8
t.jar; 

A l'ordre anterior, The set és una ordre interna de DOS que permet a l'usuari canviar el valor de la variable. CLASSPATH és un nom de variable. La variable tancada en signe de percentatge (%) és una variable d'entorn existent. El punt i coma és un separador, i després del (;) hi ha el PATH del fitxer rt.jar.

govinda

Com funciona la carpeta ext a Java

El directori ext funciona una mica com el CLASSPATH. El directori ext és la part del mecanisme de càrrega de classes. Les classes que estan disponibles dins dels JAR al directori ext estan disponibles per a les aplicacions Java.

La taula següent mostra la diferència clau entre el CLASSPATH i el mecanisme d'extensió:

Característiques CLASSPATH Mecanisme d'extensió
Ordre de càrrega de classe Càrregues CLASSPATH després de la càrrega de l'arrencada i l'extensió. càrregues ext després de la càrrega d'arrencada però abans de la càrrega de CLASSPATH.
Àmbit És una aplicació específica. Tots els JRE de l'amfitrió són la variable d'entorn CLASSPATH. Totes les JVM s'executen en JRE java.ext.dirs específics.
Nom del paquet java.class.path s'utilitza per trobar els directoris i arxius JAR que contenen fitxers de classe. java.ext.dirs s'utilitza per especificar on carrega les classes el mecanisme d'extensió.
Especificació S'especifica pel nom que inclou l'extensió.jar i el directori que conté fitxers .class. Es carreguen tots els fitxers JAR dels directoris especificats.

El mecanisme recollirà tots els fitxers .jar del directori d'extensió encara que el fitxer no tingui l'extensió .jar. La implementació d'això és que si es pot canviar el nom d'un jar situat en un directori classpath per tenir una extensió diferent de .jar. El comodí (*) no el recull. Aquesta tècnica no funcionarà amb el directori d'extensió.

Entendrem el procés d'execució a través d'un exemple.

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()); } } 

Compileu el fitxer A.java. arxivarem el fitxer A.class compilat a A.jar. Col·loqueu aquest fitxer JAR en un altre directori que no sigui el fitxer compilat B.class.

Per demostrar l'ús del classpath, col·loquem el fitxer A.jar en un directori C:JavaPrograms i accedirem a aquest JAR mitjançant el comodí (*) perquè l'utilitzi B.

Hem trobat que B encara pot carregar la classe A mentre l'havíem suprimit del directori actual. El llançador de Java es va cercar explícitament per C:JavaProgram. També és possible tenir la classe carregada sense la seva presència al mateix directori i especificació explícita del classpath.

Sovint es coneix com un avantatge de l'ús del mecanisme d'extensió perquè totes les aplicacions que utilitzen aquest JRE poden veure les mateixes classes sense necessitat d'especificar-les explícitament al camí de classe.

Què passa si canviem el nom d'A.jar per A.backup al mateix directori referenciat a CLASSPATH? NoClassDefFoundError es troba quan fem el mateix perquè la referència CLASSPATH no té l'extensió .jar.

hashtable versus hashmap