CASSPATH: CLASSPATH je premenná prostredia, ktorú používa aplikácia Application ClassLoader na nájdenie a načítanie súborov .class. CLASSPATH definuje cestu na nájdenie tried tretích strán a používateľom definovaných tried, ktoré nie sú rozšíreniami alebo súčasťou platformy Java. Pri nastavovaní CLASSPATH zahrňte všetky adresáre, ktoré obsahujú súbory .class a súbory JAR.
Musíte nastaviť CLASSPATH, ak:
zoznam polí java
- Musíte načítať triedu, ktorá sa nenachádza v aktuálnom adresári ani v žiadnych podadresároch.
- Musíte načítať triedu, ktorá sa nenachádza na mieste určenom mechanizmom rozšírení.
CLASSPATH závisí od toho, čo nastavujete CLASSPATH. CLASSPATH má na konci názov adresára alebo súboru. Nasledujúce body popisujú, aký by mal byť koniec CLASSPATH.
- Ak je súbor JAR alebo zip, súbor obsahuje súbory triedy, CLASSPATH končí názvom súboru zip alebo JAR.
- Ak sú súbory triedy umiestnené v nepomenovanom balíku, CLASSPATH končí adresárom, ktorý obsahuje súbory triedy.
- Ak sú súbory triedy umiestnené v pomenovanom balíku, CLASSPATH končí adresárom, ktorý obsahuje koreňový balík v úplnom názve balíka, čo je prvý balík v úplnom názve balíka.
Predvolená hodnota CLASSPATH je bodka (.). Znamená to, že jediný aktuálny priečinok sa prehľadáva. Predvolená hodnota CLASSPATH prepíše, keď nastavíte premennú CLASSPATH alebo použijete príkaz -classpath (skrátene -cp). Ak chcete do vyhľadávacej cesty zahrnúť aktuálny adresár, vložte do nového nastavenia bodku (.).
Ak CLASSPATH nájde súbor triedy, ktorý sa nachádza v aktuálnom adresári, načíta triedu a použije ju bez ohľadu na to, či sa trieda s rovnakým názvom nachádza v inom adresári, ktorý je tiež zahrnutý v CLASSPATH.
Ak chcete nastaviť viacero ciest tried, potom musíte každú triedu oddeliť bodkočiarkou (;).
Aplikácie tretích strán (MySQL a Oracle), ktoré používajú JVM, môžu upraviť premennú prostredia CLASSPATH tak, aby zahŕňala knižnice, ktoré používajú. Triedy môžu byť uložené v adresároch alebo archívnych súboroch. Triedy platformy Java sú uložené v rt.jar.
Existujú dva spôsoby, ako nastaviť CLASSPATH: cez príkazový riadok alebo nastavením premennej prostredia.
Pozrime sa, ako nastaviť CLASSPATH databázy MySQL:
Krok 1: Kliknite na tlačidlo Windows a vyberte položku Ovládací panel. Vyberte Systém.
Krok 2: Kliknite na Rozšírené nastavenia systému .
Krok 3: Otvorí sa dialógové okno. Kliknite na Premenné prostredia.
testovanie a typy testovania
Krok 4: Ak už CLASSPATH v systémových premenných existuje, kliknite na tlačidlo Upraviť a na koniec vložte bodkočiarku (;). Prilepte súbor Java.jar Path of MySQL-Connector.
Ak CLASSPATH v systémových premenných neexistuje, kliknite na tlačidlo New a zadajte názov premennej ako CLASSPATH a hodnotu premennej ako C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;
Zapamätajte si: Dajte ;.; na konci CLASSPATH.
Rozdiel medzi PATH a CLASSPATH
PATH | CLASSPATH |
---|---|
PATH je premenná prostredia. | CLASSPATH je tiež premenná prostredia. |
Používa ho operačný systém na nájdenie spustiteľných súborov (.exe). | Používa ho aplikácia Application ClassLoader na nájdenie súboru .class. |
Musíte zahrnúť adresár, ktorý obsahuje súbory .exe. | Musíte zahrnúť všetky adresáre, ktoré obsahujú súbory .class a JAR. |
Po nastavení premennej prostredia PATH ju nemožno prepísať. | Premennú prostredia CLASSPATH je možné prepísať použitím voľby príkazového riadka -cp alebo -CLASSPATH pre príkazy javac aj java. |
Ako nastaviť CLASSPATH v systéme Windows pomocou príkazového riadka
Do príkazového riadka zadajte nasledujúci príkaz a stlačte kláves enter.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
Vo vyššie uvedenom príkaze je sada interný príkaz DOS, ktorý umožňuje používateľovi zmeniť hodnotu premennej. CLASSPATH je názov premennej. Premenná v percentách (%) je existujúcou premennou prostredia. Bodkočiarka je oddeľovač a za (;) je PATH súboru rt.jar.
Java null check
Ako funguje priečinok ext v jazyku Java
Adresár ext funguje trochu ako CLASSPATH. Adresár ext je súčasťou mechanizmu načítania triedy. Triedy, ktoré sú dostupné v rámci JAR v adresári ext, sú dostupné pre Java aplikácie.
Nasledujúca tabuľka ukazuje kľúčový rozdiel medzi CLASSPATH a predlžovacím mechanizmom:
Charakteristika | CLASSPATH | Predlžovací mechanizmus |
---|---|---|
Poradie načítania triedy | CLASSPATH sa načíta po bootstrap a načítaní rozšírenia. | ext sa načíta po načítaní bootstrapu, ale pred načítaním CLASSPATH. |
Rozsah | Ide o špecifickú aplikáciu. Všetky JRE na hostiteľovi sú premennou prostredia CLASSPATH. | Všetky JVM bežia v špecifických JRE java.ext.dirs. |
Názov balíka | java.class.path sa používa na nájdenie adresárov a archívov JAR obsahujúcich súbory tried. | java.ext.dirs sa používa na určenie, kde mechanizmus rozšírenia načíta triedy. |
Špecifikácia | Je špecifikovaný názvom vrátane prípony.jar a adresára obsahujúceho súbory .class. | Načítajú sa všetky súbory JAR v určených adresároch. |
Mechanizmus vyberie všetky súbory .jar z adresára s príponou, aj keď súbor nemá príponu .jar. Implementácia je taká, že ak je možné zmeniť názov jar umiestneného v adresári classpath tak, aby mal inú príponu ako .jar. Zástupný znak (*) ho nepreberie. Táto technika nebude fungovať s adresárom rozšírenia.
Poďme pochopiť proces vykonávania prostredníctvom príkladu.
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()); } }
Kompilujte súbor A.java. skompilovaný súbor A.class archivujeme do A.jar. Umiestnite tento súbor JAR do iného adresára ako skompilovaný súbor B.class.
Aby sme demonštrovali použitie cesty k triede, umiestnime súbor A.jar do adresára C:JavaPrograms a pristúpime k tomuto JAR cez zástupný znak (*), aby ho B mohol použiť.
Zistili sme, že B môže stále načítať triedu A, kým sme ju odstránili z aktuálneho adresára. Java launcher bol vyslovene vyhľadaný C:JavaProgram. Je tiež možné načítať triedu bez jej prítomnosti v rovnakom adresári a explicitnej špecifikácie cesty k triede.
Často sa o ňom hovorí ako o výhode používania mechanizmu rozšírenia, pretože všetky aplikácie, ktoré používajú toto JRE, môžu vidieť rovnaké triedy bez toho, aby ich bolo potrebné explicitne špecifikovať na ceste k triede.
Čo sa stane, ak zmeníme názov A.jar na A.backup v rovnakom adresári s odkazom na CLASSPATH. Keď urobíme to isté, nastane chyba NoClassDefFoundError, pretože odkaz CLASSPATH nemá príponu .jar.
reťazec v int