CLASSPATH: CLASSPATH je varijabla okoline koju Application ClassLoader koristi za lociranje i učitavanje .class datoteka. CLASSPATH definira stazu za pronalaženje trećih strana i korisnički definiranih klasa koje nisu proširenja ili dio Java platforme. Uključite sve direktorije koji sadrže .class datoteke i JAR datoteke kada postavljate CLASSPATH.
Morate postaviti CLASSPATH ako:
python programi
- Morate učitati klasu koja nije prisutna u trenutnom direktoriju ili bilo kojem poddirektoriju.
- Morate učitati klasu koja nije na mjestu određenom mehanizmom proširenja.
CLASSPATH ovisi o tome što postavljate CLASSPATH. CLASSPATH ima naziv direktorija ili naziv datoteke na kraju. Sljedeće točke opisuju što bi trebao biti kraj CLASSPATH-a.
- Ako je JAR ili zip, datoteka sadrži class datoteke, CLASSPATH završava s nazivom zip ili JAR datoteke.
- Ako se datoteke klase nalaze u neimenovanom paketu, CLASSPATH završava direktorijem koji sadrži datoteke klase.
- Ako su datoteke klase smještene u imenovani paket, CLASSPATH završava direktorijem koji sadrži korijenski paket u punom nazivu paketa, to je prvi paket u punom nazivu paketa.
Zadana vrijednost CLASSPATH je točka (.). To znači jedini trenutno pretraživani direktorij. Zadana vrijednost CLASSPATH nadjačava se kada postavite varijablu CLASSPATH ili koristite naredbu -classpath (skraćeno -cp). Stavite točku (.) u novu postavku ako želite uključiti trenutni direktorij u put pretraživanja.
Ako CLASSPATH pronađe datoteku klase koja je prisutna u trenutnom direktoriju, tada će učitati klasu i koristiti je, bez obzira na to da li je klasa istog imena prisutna u drugom direktoriju koji je također uključen u CLASSPATH.
Ako želite postaviti više staza klasa, morate odvojiti svaku CLASSPATH točkom i zarezom (;).
Aplikacije trećih strana (MySQL i Oracle) koje koriste JVM mogu modificirati varijablu okruženja CLASSPATH kako bi uključile biblioteke koje koriste. Klase se mogu pohraniti u direktorije ili arhivske datoteke. Klase Java platforme pohranjene su u rt.jar.
Postoje dva načina za postavljanje CLASSPATH: putem naredbenog retka ili postavljanjem varijable okruženja.
Pogledajmo kako postaviti CLASSPATH MySQL baze podataka:
Korak 1: Pritisnite gumb Windows i odaberite Upravljačka ploča. Odaberite Sustav.
Korak 2: Kliknite na Napredne postavke sistema .
Korak 3: Otvorit će se dijaloški okvir. Kliknite na Varijable okoline.
arijski kan
Korak 4: Ako CLASSPATH već postoji u varijablama sustava, kliknite na gumb Uredi, a zatim stavite točku i zarez (;) na kraju. Zalijepite Put do datoteke MySQL-Connector Java.jar.
Ako CLASSPATH ne postoji u varijablama sustava, kliknite na gumb Novo i upišite naziv varijable kao CLASSPATH i vrijednost varijable kao C:Programske datotekeJavajre1.8MySQL-Connector Java.jar;.;
Zapamtite: Stavite ;.; na kraju RAZREDNE STAZE.
Razlika između PATH i CLASSPATH
STAZA | CLASSPATH |
---|---|
PATH je varijabla okoline. | CLASSPATH je također varijabla okruženja. |
Koristi ga operativni sustav za pronalaženje izvršnih datoteka (.exe). | Koristi ga Application ClassLoader za lociranje datoteke .class. |
Morate uključiti direktorij koji sadrži .exe datoteke. | Od vas se traži da uključite sve direktorije koji sadrže .class i JAR datoteke. |
Jednom postavljena varijabla okruženja PATH ne može se nadjačati. | Varijabla okoline CLASSPATH može se nadjačati korištenjem opcije naredbenog retka -cp ili -CLASSPATH i za javac i za java naredbu. |
Kako postaviti CLASSPATH u sustavu Windows pomoću naredbenog retka
Upišite sljedeću naredbu u naredbeni redak i pritisnite enter.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
U gornjoj naredbi, Set je interna DOS naredba koja korisniku omogućuje promjenu vrijednosti varijable. CLASSPATH je ime varijable. Varijabla okružena znakom postotka (%) je postojeća varijabla okruženja. Točka i zarez je separator, a iza (;) stoji PUT rt.jar datoteke.
javascript globalne varijable
Kako radi mapa ext u Javi
Ext direktorij radi pomalo poput CLASSPATH. ext direktorij je dio mehanizma za učitavanje klase. Klase koje su dostupne unutar JAR-ova u ext direktoriju dostupne su Java aplikacijama.
Sljedeća tablica pokazuje ključnu razliku između CLASSPATH i mehanizma proširenja:
Karakteristike | CLASSPATH | Mehanizam produljenja |
---|---|---|
Redoslijed učitavanja razreda | CLASSPATH se učitava nakon pokretanja i učitavanja proširenja. | ext učitava nakon učitavanja bootstrapa, ali prije učitavanja CLASSPATH. |
Opseg | To je specifična aplikacija. Svi JRE-ovi na hostu su varijabla okoline CLASSPATH. | Svi JVM-ovi rade u određenim JRE java.ext.dirs. |
Naziv paketa | java.class.path se koristi za pronalaženje direktorija i JAR arhiva koje sadrže datoteke klasa. | java.ext.dirs se koristi za određivanje gdje mehanizam proširenja učitava klase. |
Specifikacija | Određen je imenom uključujući ekstenziju.jar i direktorij koji sadrži .class datoteke. | Učitavaju se sve JAR datoteke u navedenim direktorijima. |
Mehanizam će pokupiti sve .jar datoteke iz direktorija ekstenzije čak i ako datoteka nema ekstenziju .jar. Implementacija ovoga je da ako netko može promijeniti naziv jar smješten u classpath direktorij da ima ekstenziju koja nije .jar. Zamjenski znak (*) ne preuzima ga. Ova tehnika neće raditi s imenikom proširenja.
Razmotrimo postupak izvršenja kroz primjer.
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()); } }
Prevedite A.java datoteku. mi ćemo arhivirati kompajliranu datoteku A.class u A.jar. Postavite ovu JAR datoteku u drugi direktorij osim kompajlirane B.class datoteke.
Kako bismo demonstrirali korištenje classpath-a, smjestili smo A.jar datoteku u direktorij C:JavaPrograms i pristupit ćemo tom JAR-u putem zamjenskog znaka (*) kako bi ga B koristio.
Otkrili smo da B još uvijek može učitati A.class iako smo je izbrisali iz trenutnog direktorija. Java pokretač je eksplicitno tražen za C:JavaProgram. Također je moguće da se klasa učita bez svoje prisutnosti u istom direktoriju i eksplicitnoj specifikaciji staze klase.
To se često naziva dobrobit korištenja mehanizma proširenja jer sve aplikacije koje koriste taj JRE mogu vidjeti iste klase bez potrebe da ih eksplicitno specificiraju na stazi klasa.
Što se događa ako promijenimo naziv A.jar u A.backup u istom direktoriju na koji se odnosi CLASSPATH. NoClassDefFoundError se pojavljuje kada radimo isto jer CLASSPATH-referenca nema ekstenziju .jar.
java uhvati pokušaj