KLASSESTI: CLASSPATH er en miljøvariabel, som bruges af Application ClassLoader til at finde og indlæse .class-filerne. CLASSPATH definerer stien til at finde tredjeparts- og brugerdefinerede klasser, der ikke er udvidelser eller en del af Java-platformen. Inkluder alle de mapper, der indeholder .class-filer og JAR-filer, når du indstiller CLASSPATH.
Du skal indstille CLASSPATH hvis:
hvad er dvale
- Du skal indlæse en klasse, der ikke er til stede i den aktuelle mappe eller nogen undermapper.
- Du skal indlæse en klasse, der ikke er på en placering, der er angivet af udvidelsesmekanismen.
CLASSPATH afhænger af, hvad du indstiller CLASSPATH. CLASSPATH har et mappenavn eller filnavn i slutningen. De følgende punkter beskriver, hvad der skal være afslutningen på KLASSESTIEN.
- Hvis en JAR eller zip, indeholder filen klassefiler, CLASSPATH slutter med navnet på zip- eller JAR-filen.
- Hvis klassefiler placeres i en unavngiven pakke, slutter CLASSPATH med den mappe, der indeholder klassefilerne.
- Hvis klassefiler placeres i en navngivet pakke, slutter CLASSPATH med den mappe, der indeholder rodpakken i det fulde pakkenavn, dvs. den første pakke i det fulde pakkenavn.
Standardværdien for CLASSPATH er en prik (.). Det betyder den eneste aktuelle mappe, der søges i. Standardværdien for CLASSPATH tilsidesætter, når du indstiller CLASSPATH-variablen eller bruger kommandoen -classpath (for kort -cp). Sæt en prik (.) i den nye indstilling, hvis du vil inkludere den aktuelle mappe i søgestien.
Hvis CLASSPATH finder en klassefil, som er til stede i den aktuelle mappe, så vil den indlæse klassen og bruge den, uanset om den samme navn klasse præsenteres i en anden mappe, som også er inkluderet i CLASSPATH.
Hvis du vil indstille flere klassestier, skal du adskille hver CLASSPATH med et semikolon (;).
Tredjepartsapplikationerne (MySQL og Oracle), der bruger JVM'en, kan ændre CLASSPATH-miljøvariablen til at inkludere de biblioteker, de bruger. Klasserne kan gemmes i mapper eller arkivfiler. Java-platformens klasser er gemt i rt.jar.
Der er to måder at indstille CLASSPATH på: gennem kommandoprompt eller ved at indstille miljøvariabel.
Lad os se, hvordan du indstiller CLASSPATH af MySQL-databasen:
Trin 1: Klik på Windows-knappen og vælg Kontrolpanel. Vælg System.
Trin 2: Klik på Avancerede systemindstillinger .
registrere hukommelse
Trin 3: En dialogboks åbnes. Klik på Miljøvariabler.
Trin 4: Hvis CLASSPATH allerede findes i systemvariabler, skal du klikke på knappen Rediger og derefter sætte et semikolon (;) i slutningen. Indsæt stien til MySQL-Connector Java.jar-filen.
Hvis CLASSPATH ikke findes i systemvariabler, skal du klikke på knappen Ny og skrive variabelnavn som CLASSPATH og variabelværdi som C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;
Husk: Sæt ;.; i slutningen af KLASSESTIEN.
Forskellen mellem PATH og CLASSPATH
STI | KLASSESTI |
---|---|
PATH er en miljøvariabel. | CLASSPATH er også en miljøvariabel. |
Det bruges af operativsystemet til at finde de eksekverbare filer (.exe). | Det bruges af Application ClassLoader til at finde .class-filen. |
Du skal inkludere den mappe, der indeholder .exe-filer. | Du skal inkludere alle mapper, der indeholder .class- og JAR-filer. |
PATH miljøvariabel, når den er indstillet, kan ikke tilsidesættes. | CLASSPATH miljøvariablen kan tilsidesættes ved at bruge kommandolinjeindstillingen -cp eller -CLASSPATH til både javac og java kommandoen. |
Sådan indstilles CLASSPATH i Windows ved hjælp af kommandoprompt
Indtast følgende kommando i din kommandoprompt, og tryk på enter.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
I ovenstående kommando er sættet en intern DOS-kommando, der giver brugeren mulighed for at ændre variabelværdien. CLASSPATH er et variabelnavn. Variablen indesluttet i procenttegn (%) er en eksisterende miljøvariabel. Semikolonet er en separator, og efter (;) er der PATH til rt.jar-filen.
java læse csv-fil
Sådan fungerer ext-mappe i Java
Ext-biblioteket fungerer lidt ligesom CLASSPATH. ext-biblioteket er den del af klasseindlæsningsmekanismen. Klasserne, der er tilgængelige i JAR'er i ext-biblioteket, er tilgængelige for Java-applikationer.
Følgende tabel viser den vigtigste forskel mellem CLASSPATH og udvidelsesmekanismen:
Egenskaber | KLASSESTI | Udvidelsesmekanisme |
---|---|---|
Klasse indlæsningsrækkefølge | CLASSPATH indlæses efter bootstrap og extension loading. | ext indlæses efter bootstrap-indlæsning, men før CLASSPATH-indlæsning. |
Omfang | Det er en applikationsspecifik. Alle JRE'er på værten er miljøvariablen CLASSPATH. | Alle JVM'er kører i specifikke JRE java.ext.dirs. |
Pakkenavn | java.class.path bruges til at finde mapper og JAR-arkiver, der indeholder klassefiler. | java.ext.dirs bruges til at angive, hvor udvidelsesmekanismen indlæser klasser. |
Specifikation | Det er specificeret ved navn, inklusive extension.jar og mappe, der indeholder .class-filer. | Alle JAR-filer i specificerede mapper indlæses. |
Mekanismen henter alle .jar-filer fra filtypenavnet, selvom filen ikke har filtypenavnet .jar. Implementeringen af dette er, at hvis man kan ændre navnet på en jar placeret i en classpath-mappe til at have en anden udvidelse end .jar. Jokertegnet (*) opfanger det ikke. Denne teknik vil ikke fungere med udvidelsesmappen.
Lad os forstå udførelsesprocessen gennem 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 kompilerede A.class-fil i A.jar. Placer denne JAR-fil i en anden mappe end den kompilerede B.class-fil.
For at demonstrere brugen af klassestien placerer vi A.jar-filen i en mappe C:JavaPrograms og får adgang til den JAR via jokertegn (*), som B kan bruge.
Vi fandt ud af, at B stadig kan indlæse A.class, mens vi havde slettet den fra den aktuelle mappe. Java-starteren blev eksplicit ledt efter C:JavaProgram. Det er også muligt at få klassen indlæst uden dens tilstedeværelse i samme mappe og eksplicitte klassestispecifikation.
Det omtales ofte som en fordel ved at bruge udvidelsesmekanismen, fordi alle applikationer, der bruger den JRE, kan se de samme klasser uden at skulle specificere dem på klassestien eksplicit.
Hvad sker der, hvis vi ændrer navnet på A.jar til A.backup i den samme CLASSPATH-refererede mappe. NoClassDefFoundError støder på, når vi gør det samme, fordi CLASSPATH-referencen ikke har .jar-udvidelsen.
knap for at centrere css