KLASSVÄG: CLASSPATH är en miljövariabel som används av Application ClassLoader för att hitta och ladda .class-filerna. CLASSPATH definierar sökvägen för att hitta tredjeparts- och användardefinierade klasser som inte är tillägg eller en del av Java-plattformen. Inkludera alla kataloger som innehåller .class-filer och JAR-filer när du ställer in CLASSPATH.
Du måste ställa in CLASSPATH om:
typer av tester
- Du måste ladda en klass som inte finns i den aktuella katalogen eller några underkataloger.
- Du måste ladda en klass som inte finns på en plats som anges av tilläggsmekanismen.
CLASSPATH beror på vad du ställer in CLASSPATH. CLASSPATH har ett katalognamn eller filnamn i slutet. Följande punkter beskriver vad som bör vara slutet på KLASSVÄGEN.
- Om en JAR eller zip, innehåller filen klassfiler, CLASSPATH slutar med namnet på zip- eller JAR-filen.
- Om klassfiler placeras i ett namnlöst paket, slutar CLASSPATH med katalogen som innehåller klassfilerna.
- Om klassfiler placeras i ett namngivet paket, slutar CLASSPATH med katalogen som innehåller rotpaketet i det fullständiga paketnamnet, det vill säga det första paketet i det fullständiga paketnamnet.
Standardvärdet för CLASSPATH är en punkt (.). Det betyder den enda aktuella katalogen som söks. Standardvärdet för CLASSPATH åsidosätter när du ställer in variabeln CLASSPATH eller använder kommandot -classpath (för kort -cp). Sätt en punkt (.) i den nya inställningen om du vill inkludera den aktuella katalogen i sökvägen.
Om CLASSPATH hittar en klassfil som finns i den aktuella katalogen, kommer den att ladda klassen och använda den, oavsett om samma namn klass presenteras i en annan katalog som också ingår i CLASSPATH.
Om du vill ställa in flera klasssökvägar, måste du separera varje CLASSPATH med ett semikolon (;).
Tredjepartsapplikationerna (MySQL och Oracle) som använder JVM kan modifiera miljövariabeln CLASSPATH för att inkludera de bibliotek de använder. Klasserna kan lagras i kataloger eller arkivfiler. Java-plattformens klasser lagras i rt.jar.
Det finns två sätt att ställa in CLASSPATH: genom kommandotolken eller genom att ställa in miljövariabel.
Låt oss se hur du ställer in CLASSPATH för MySQL-databasen:
xvideoservicethief ubuntu 14.04 ladda ner
Steg 1: Klicka på Windows-knappen och välj Kontrollpanelen. Välj System.
Steg 2: Klicka på Avancerade systeminställningar .
Steg 3: En dialogruta öppnas. Klicka på Miljövariabler.
Steg 4: Om CLASSPATH redan finns i systemvariabler, klicka på knappen Redigera och sätt sedan ett semikolon (;) i slutet. Klistra in sökvägen till MySQL-Connector Java.jar-filen.
Om CLASSPATH inte finns i systemvariabler, klicka på knappen Ny och skriv variabelnamn som CLASSPATH och variabelvärde som C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;
Kom ihåg: Lägg ;.; i slutet av CLASSPATH.
Skillnaden mellan PATH och CLASSPATH
VÄG | KLASSVÄG |
---|---|
PATH är en miljövariabel. | CLASSPATH är också en miljövariabel. |
Det används av operativsystemet för att hitta de körbara filerna (.exe). | Den används av Application ClassLoader för att hitta .class-filen. |
Du måste inkludera katalogen som innehåller .exe-filer. | Du måste inkludera alla kataloger som innehåller .class- och JAR-filer. |
PATH miljövariabel när den har ställts in, kan inte åsidosättas. | Miljövariabeln CLASSPATH kan åsidosättas genom att använda kommandoradsalternativet -cp eller -CLASSPATH till både javac och java-kommandot. |
Hur man ställer in CLASSPATH i Windows med kommandotolken
Skriv följande kommando i din kommandotolk och tryck på enter.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
I kommandot ovan är uppsättningen ett internt DOS-kommando som låter användaren ändra variabelvärdet. CLASSPATH är ett variabelnamn. Variabeln omsluten av procenttecken (%) är en befintlig miljövariabel. Semikolonet är en avgränsare, och efter (;) finns PATH för rt.jar-filen.
java annat
Hur ext-mappen fungerar i Java
Ext-katalogen fungerar lite som CLASSPATH. ext-katalogen är den del av klassladdningsmekanismen. Klasserna som är tillgängliga inom JAR i ext-katalogen är tillgängliga för Java-applikationer.
Följande tabell visar nyckelskillnaden mellan CLASSPATH och Extension Mechanism:
Egenskaper | KLASSVÄG | Förlängningsmekanism |
---|---|---|
Klassladdningsordning | CLASSPATH laddas efter bootstrap och extensionsladdning. | ext laddas efter bootstrap-laddning men innan CLASSPATH-laddning. |
Omfattning | Det är en applikationsspecifik. Alla JRE på värden är miljövariabeln CLASSPATH. | Alla JVM:er körs i specifika JRE java.ext.dirs. |
Paketnamn | java.class.path används för att hitta kataloger och JAR-arkiv som innehåller klassfiler. | java.ext.dirs används för att specificera var förlängningsmekanismen laddar klasser. |
Specifikation | Den specificeras med namn inklusive extension.jar och katalog som innehåller .class-filer. | Alla JAR-filer i angivna kataloger laddas. |
Mekanismen hämtar alla .jar-filer från tilläggskatalogen även om filen inte har tillägget .jar. Implementeringen av detta är att om man kan ändra namnet på en jar placerad i en classpath-katalog för att ha en annan förlängning än .jar. Jokertecknet (*) tar inte upp det. Den här tekniken fungerar inte med tilläggskatalogen.
Låt oss förstå exekveringsprocessen genom ett exempel.
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()); } }
Kompilera filen A.java. vi kommer att arkivera den kompilerade A.class-filen i A.jar. Placera den här JAR-filen i en annan katalog än den kompilerade B.class-filen.
För att demonstrera användningen av klasssökvägen placerar vi A.jar-filen i en katalog C:JavaPrograms och kommer åt den JAR genom jokertecken (*) för B att använda.
Vi upptäckte att B fortfarande kan ladda A.class medan vi hade tagit bort den från den aktuella katalogen. Java-startprogrammet söktes uttryckligen efter C:JavaProgram. Det är också möjligt att ha klassen laddad utan dess närvaro i samma katalog och explicit klasssökvägsspecifikation.
Det hänvisas ofta till som en fördel med att använda förlängningsmekanismen eftersom alla applikationer som använder den JRE kan se samma klasser utan att behöva specificera dem på klassvägen explicit.
Vad händer om vi ändrar namnet på A.jar till A.backup i samma CLASSPATH-refererade katalog. NoClassDefFoundError påträffas när vi gör detsamma eftersom CLASSPATH-referensen inte har tillägget .jar.
iterator java karta