logo

CLASSPATH instellen in Java

KLASSPAD: CLASSPATH is een omgevingsvariabele die door Application ClassLoader wordt gebruikt om de .class-bestanden te lokaliseren en te laden. De CLASSPATH definieert het pad om klassen van derden en door de gebruiker gedefinieerde klassen te vinden die geen extensies zijn of deel uitmaken van het Java-platform. Neem alle mappen op die .class-bestanden en JAR-bestanden bevatten bij het instellen van CLASSPATH.

U moet CLASSPATH instellen als:

Java-gebruikersinvoer
  • U moet een klasse laden die niet aanwezig is in de huidige map of submappen.
  • U moet een klasse laden die zich niet op een locatie bevindt die is opgegeven door het uitbreidingsmechanisme.

De CLASSPATH hangt af van wat u de CLASSPATH instelt. De CLASSPATH heeft aan het einde een mapnaam of bestandsnaam. De volgende punten beschrijven wat het einde van CLASSPATH zou moeten zijn.

  • Als het een JAR- of zip-bestand is, bevat het bestand klassebestanden; CLASSPATH eindigt met de naam van het zip- of JAR-bestand.
  • Als klassebestanden in een naamloos pakket worden geplaatst, eindigt CLASSPATH met de map die de klassebestanden bevat.
  • Als klassebestanden in een benoemd pakket worden geplaatst, eindigt CLASSPATH met de map die het rootpakket in de volledige pakketnaam bevat, dat wil zeggen het eerste pakket in de volledige pakketnaam.

De standaardwaarde van CLASSPATH is een punt (.). Het betekent dat de enige huidige directory wordt doorzocht. De standaardwaarde van CLASSPATH overschrijft wanneer u de CLASSPATH-variabele instelt of de opdracht -classpath gebruikt (kortweg -cp). Plaats een punt (.) in de nieuwe instelling als u de huidige map in het zoekpad wilt opnemen.

Als CLASSPATH een klassenbestand vindt dat aanwezig is in de huidige map, dan zal het de klasse laden en gebruiken, ongeacht de klassenaam die aanwezig is in een andere map die ook in CLASSPATH is opgenomen.

Als u meerdere klassenpaden wilt instellen, moet u elke CLASSPATH scheiden door een puntkomma (;).

De applicaties van derden (MySQL en Oracle) die de JVM gebruiken, kunnen de CLASSPATH-omgevingsvariabele wijzigen om de bibliotheken die ze gebruiken op te nemen. De klassen kunnen worden opgeslagen in mappen of archiefbestanden. De klassen van het Java-platform worden opgeslagen in rt.jar.

Er zijn twee manieren om CLASSPATH in te stellen: via de opdrachtprompt of door de omgevingsvariabele in te stellen.

Laten we eens kijken hoe we CLASSPATH van de MySQL-database kunnen instellen:

Stap 1: Klik op de Windows-knop en kies Configuratiescherm. Selecteer Systeem.

intelligent idee versus eclips
CLASSPATH instellen in Java

Stap 2: Klik op Geavanceerde systeeminstellingen .

CLASSPATH instellen in Java

Stap 3: Er wordt een dialoogvenster geopend. Klik op Omgevingsvariabelen.

CLASSPATH instellen in Java

Stap 4: Als CLASSPATH al bestaat in Systeemvariabelen, klikt u op de knop Bewerken en plaatst u een puntkomma (;) aan het einde. Plak het pad van het MySQL-Connector Java.jar-bestand.

Als CLASSPATH niet bestaat in Systeemvariabelen, klik dan op de knop Nieuw en typ Variabelenaam als CLASSPATH en Variabelewaarde als C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;

Onthoud: Zet ;.; aan het einde van het CLASSPATH.

CLASSPATH instellen in Java

Verschil tussen PATH en CLASSPATH

PAD KLASSPAD
PATH is een omgevingsvariabele. CLASSPATH is ook een omgevingsvariabele.
Het wordt door het besturingssysteem gebruikt om de uitvoerbare bestanden (.exe) te vinden. Het wordt door Application ClassLoader gebruikt om het .class-bestand te lokaliseren.
U bent verplicht de map op te nemen die de .exe-bestanden bevat. U bent verplicht alle mappen op te nemen die .class- en JAR-bestanden bevatten.
Als de omgevingsvariabele PATH eenmaal is ingesteld, kan deze niet meer worden overschreven. De CLASSPATH-omgevingsvariabele kan worden overschreven door de opdrachtregeloptie -cp of -CLASSPATH te gebruiken voor zowel Java- als Java-opdrachten.

Hoe CLASSPATH in Windows in te stellen met behulp van de opdrachtprompt

Typ de volgende opdracht in uw opdrachtprompt en druk op Enter.

 set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8
t.jar; 

In de bovenstaande opdracht is The set een interne DOS-opdracht waarmee de gebruiker de variabelewaarde kan wijzigen. CLASSPATH is een variabelenaam. De variabele tussen procentteken (%) is een bestaande omgevingsvariabele. De puntkomma is een scheidingsteken en na de (;) staat het PATH van het bestand rt.jar.

substring-methode in Java

Hoe de ext-map werkt in Java

De ext-map werkt een beetje zoals CLASSPATH. ext directory is het onderdeel van het klassenlaadmechanisme. De klassen die beschikbaar zijn binnen JAR's in de ext-map zijn beschikbaar voor Java-toepassingen.

De volgende tabel laat het belangrijkste verschil zien tussen CLASSPATH en het uitbreidingsmechanisme:

Kenmerken KLASSPAD Uitbreidingsmechanisme
Laadvolgorde van de klas CLASSPATH wordt geladen na het laden van bootstrap en uitbreiding. ext wordt geladen na het bootstrap-laden maar vóór het laden van CLASSPATH.
Domein Het is een applicatiespecifiek. Alle JRE's op de host zijn de CLASSPATH-omgevingsvariabele. Alle JVM's draaien in specifieke JRE java.ext.dirs.
Verpakkingsnaam java.class.path wordt gebruikt om de mappen en JAR-archieven te vinden die klassebestanden bevatten. java.ext.dirs wordt gebruikt om aan te geven waar het extensiemechanisme klassen laadt.
Specificatie Het wordt gespecificeerd op naam, inclusief de extensie.jar en de map met .class-bestanden. Alle JAR-bestanden in de opgegeven mappen worden geladen.

Het mechanisme haalt alle .jar-bestanden op uit de extensiemap, zelfs als het bestand niet de .jar-extensie heeft. De implementatie hiervan is dat als men de naam van een jar die in een classpath-map is geplaatst, kan wijzigen om een ​​andere extensie dan .jar te krijgen. Het jokerteken (*) pikt dit niet op. Deze techniek werkt niet met de extensiemap.

Laten we het uitvoeringsproces begrijpen aan de hand van een voorbeeld.

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()); } } 

Compileer het A.java-bestand. we archiveren het gecompileerde A.class-bestand in A.jar. Plaats dit JAR-bestand in een andere map dan het gecompileerde B.class-bestand.

Om het gebruik van het klassenpad te demonstreren, plaatsen we het A.jar-bestand in een map C:JavaPrograms en krijgen we toegang tot die JAR via een jokerteken (*) zodat B deze kan gebruiken.

We hebben ontdekt dat B de klasse A. nog steeds kan laden terwijl we deze uit de huidige map hadden verwijderd. In het Java-opstartprogramma werd expliciet gezocht naar C:JavaProgram. Het is ook mogelijk om de klasse te laten laden zonder dat deze aanwezig is in dezelfde map en zonder expliciete klassenpadspecificatie.

Er wordt vaak naar verwezen als een voordeel van het gebruik van het uitbreidingsmechanisme, omdat alle toepassingen die JRE gebruiken dezelfde klassen kunnen zien zonder dat ze deze expliciet op het klassenpad hoeven te specificeren.

Wat gebeurt er als we de naam van A.jar veranderen in A.backup in dezelfde map waarnaar naar CLASSPATH wordt verwezen. NoClassDefFoundError treedt op wanneer we hetzelfde doen, omdat de CLASSPATH-referentie niet de .jar-extensie heeft.

Java-trimstring