KLASSEBANEN: CLASSPATH er en miljøvariabel som brukes av Application ClassLoader for å finne og laste .class-filene. CLASSPATH definerer banen for å finne tredjeparts- og brukerdefinerte klasser som ikke er utvidelser eller en del av Java-plattformen. Inkluder alle katalogene som inneholder .class-filer og JAR-filer når du angir CLASSPATH.
Du må angi CLASSPATH hvis:
hva er dvalemodus
- Du må laste inn en klasse som ikke er til stede i gjeldende katalog eller noen underkataloger.
- Du må laste inn en klasse som ikke er på et sted spesifisert av utvidelsesmekanismen.
CLASSPATH avhenger av hva du setter CLASSPATH. CLASSPATH har et katalognavn eller filnavn på slutten. Følgende punkter beskriver hva som skal være slutten på KLASSEPANEN.
- Hvis en JAR eller zip, inneholder filen klassefiler, CLASSPATH slutter med navnet på zip- eller JAR-filen.
- Hvis klassefiler er plassert i en navnløs pakke, slutter CLASSPATH med katalogen som inneholder klassefilene.
- Hvis klassefiler plasseres i en navngitt pakke, slutter CLASSPATH med katalogen som inneholder rotpakken i hele pakkenavnet, det vil si den første pakken i hele pakkenavnet.
Standardverdien til CLASSPATH er en prikk (.). Det betyr den eneste gjeldende katalogen som er søkt. Standardverdien til CLASSPATH overstyrer når du angir CLASSPATH-variabelen eller bruker -classpath-kommandoen (for kort -cp). Sett en prikk (.) i den nye innstillingen hvis du vil inkludere gjeldende katalog i søkebanen.
Hvis CLASSPATH finner en klassefil som er til stede i den gjeldende katalogen, vil den laste klassen og bruke den, uavhengig av samme navn som klassen presenteres i en annen katalog som også er inkludert i CLASSPATH.
Hvis du vil angi flere klassebaner, må du skille hver CLASSPATH med et semikolon (;).
Tredjepartsapplikasjonene (MySQL og Oracle) som bruker JVM kan endre miljøvariabelen CLASSPATH for å inkludere bibliotekene de bruker. Klassene kan lagres i kataloger eller arkivfiler. Klassene til Java-plattformen er lagret i rt.jar.
Det er to måter å angi CLASSPATH på: gjennom ledetekst eller ved å angi miljøvariabel.
La oss se hvordan du setter CLASSPATH av MySQL-databasen:
Trinn 1: Klikk på Windows-knappen og velg Kontrollpanel. Velg System.
Steg 2: Klikk på Avanserte systeminnstillinger .
apurva padgaonkar
Trinn 3: En dialogboks åpnes. Klikk på Miljøvariabler.
Trinn 4: Hvis CLASSPATH allerede finnes i systemvariabler, klikk på Rediger-knappen og sett deretter et semikolon (;) på slutten. Lim inn Path of MySQL-Connector Java.jar-filen.
Hvis CLASSPATH ikke finnes i systemvariabler, klikker du på Ny-knappen og skriver inn variabelnavn som CLASSPATH og variabelverdi som C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;
Husk: Sett ;.; på slutten av KLASSEBIEN.
Forskjellen mellom PATH og CLASSPATH
STI | KLASSEVEIEN |
---|---|
PATH er en miljøvariabel. | CLASSPATH er også en miljøvariabel. |
Den brukes av operativsystemet for å finne de kjørbare filene (.exe). | Den brukes av Application ClassLoader for å finne .class-filen. |
Du må inkludere katalogen som inneholder .exe-filer. | Du må inkludere alle katalogene som inneholder .class- og JAR-filer. |
PATH miljøvariabel når den er satt, kan ikke overstyres. | CLASSPATH miljøvariabelen kan overstyres ved å bruke kommandolinjealternativet -cp eller -CLASSPATH til både javac og java-kommandoen. |
Hvordan stille inn CLASSPATH i Windows ved hjelp av ledetekst
Skriv inn følgende kommando i ledeteksten og trykk enter.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
I kommandoen ovenfor er settet en intern DOS-kommando som lar brukeren endre variabelverdien. CLASSPATH er et variabelnavn. Variabelen omsluttet av prosenttegn (%) er en eksisterende miljøvariabel. Semikolonet er en separator, og etter (;) er det PATH til rt.jar-filen.
tilpasset unntak i java
Hvordan ext-mappen fungerer i Java
Ext-katalogen fungerer litt som CLASSPATH. ext-katalogen er delen av klassens lastemekanisme. Klassene som er tilgjengelige i JAR-er i ext-katalogen er tilgjengelige for Java-applikasjoner.
Følgende tabell viser nøkkelforskjellen mellom CLASSPATH og utvidelsesmekanismen:
Kjennetegn | KLASSEVEIEN | Forlengelsesmekanisme |
---|---|---|
Klasse lasterekkefølge | CLASSPATH lastes etter oppstarts- og utvidelseslasting. | ext laster etter oppstartslasting, men før CLASSPATH-lasting. |
omfang | Det er en applikasjonsspesifikk. Alle JRE-er på verten er miljøvariabelen CLASSPATH. | Alle JVM-er kjører i spesifikke JRE java.ext.dirs. |
Pakkenavn | java.class.path brukes til å finne katalogene og JAR-arkivene som inneholder klassefiler. | java.ext.dirs brukes til å spesifisere hvor utvidelsesmekanismen laster klasser. |
Spesifikasjon | Den er spesifisert med navn inkludert extension.jar og katalog som inneholder .class-filer. | Alle JAR-filer i spesifiserte kataloger lastes inn. |
Mekanismen vil plukke opp alle .jar-filer fra utvidelseskatalogen selv om filen ikke har .jar-utvidelsen. Implementeringen av dette er at hvis man kan endre navnet på en jar plassert i en classpath-katalog til å ha en annen utvidelse enn .jar. Jokertegnet (*) fanger det ikke opp. Denne teknikken vil ikke fungere med utvidelseskatalogen.
La oss forstå utførelsesprosessen gjennom et eksempel.
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()); } }
Kompiler A.java-filen. vi vil arkivere den kompilerte A.class-filen i A.jar. Plasser denne JAR-filen i en annen katalog enn den kompilerte B.class-filen.
For å demonstrere bruken av klassebanen, plasserer vi A.jar-filen i en katalog C:JavaPrograms og vil få tilgang til den JAR-en via jokertegn (*) for B å bruke.
Vi fant ut at B fortsatt kan laste A.class mens vi hadde slettet den fra gjeldende katalog. Java-starteren ble eksplisitt sett etter C:JavaProgram. Det er også mulig å ha klassen lastet uten dens tilstedeværelse i samme katalog og eksplisitt klassebanespesifikasjon.
Det blir ofte referert til som en fordel ved å bruke utvidelsesmekanismen fordi alle applikasjoner som bruker den JRE kan se de samme klassene uten å måtte spesifisere dem på klassebanen eksplisitt.
Hva skjer hvis vi endrer navnet på A.jar til A.backup i samme CLASSPATH-refererte katalog. NoClassDefFoundError oppstår når vi gjør det samme fordi CLASSPATH-referansen ikke har .jar-utvidelsen.
kommando touch i linux