CHEMIN DE CLASSE : CLASSPATH est une variable d'environnement utilisée par Application ClassLoader pour localiser et charger les fichiers .class. Le CLASSPATH définit le chemin pour rechercher des classes tierces et définies par l'utilisateur qui ne sont pas des extensions ou ne font pas partie de la plate-forme Java. Incluez tous les répertoires contenant des fichiers .class et des fichiers JAR lors de la définition du CLASSPATH.
Vous devez définir le CLASSPATH si :
commentaire javascript
- Vous devez charger une classe qui n'est pas présente dans le répertoire courant ou dans aucun sous-répertoire.
- Vous devez charger une classe qui ne se trouve pas à un emplacement spécifié par le mécanisme d'extensions.
Le CLASSPATH dépend de ce que vous définissez pour le CLASSPATH. Le CLASSPATH a un nom de répertoire ou un nom de fichier à la fin. Les points suivants décrivent ce que devrait être la fin du CLASSPATH.
- S'il s'agit d'un JAR ou d'un zip, le fichier contient des fichiers de classe, le CLASSPATH se termine par le nom du fichier zip ou JAR.
- Si les fichiers de classe sont placés dans un package sans nom, CLASSPATH se termine par le répertoire qui contient les fichiers de classe.
- Si les fichiers de classe sont placés dans un package nommé, CLASSPATH se termine par le répertoire qui contient le package racine dans le nom complet du package, c'est-à-dire le premier package dans le nom complet du package.
La valeur par défaut de CLASSPATH est un point (.). Cela signifie le seul répertoire actuel recherché. La valeur par défaut de CLASSPATH est remplacée lorsque vous définissez la variable CLASSPATH ou à l'aide de la commande -classpath (pour faire court -cp). Mettez un point (.) dans le nouveau paramètre si vous souhaitez inclure le répertoire actuel dans le chemin de recherche.
Si CLASSPATH trouve un fichier de classe présent dans le répertoire actuel, il chargera la classe et l'utilisera, quel que soit le même nom de classe présent dans un autre répertoire également inclus dans CLASSPATH.
Si vous souhaitez définir plusieurs chemins de classe, vous devez séparer chaque chemin de classe par un point-virgule (;).
Les applications tierces (MySQL et Oracle) qui utilisent la JVM peuvent modifier la variable d'environnement CLASSPATH pour inclure les bibliothèques qu'elles utilisent. Les classes peuvent être stockées dans des répertoires ou des fichiers d'archives. Les classes de la plateforme Java sont stockées dans rt.jar.
Il existe deux manières de définir CLASSPATH : via l'invite de commande ou en définissant une variable d'environnement.
Voyons comment définir CLASSPATH de la base de données MySQL :
Étape 1: Cliquez sur le bouton Windows et choisissez Panneau de configuration. Sélectionnez Système.
qu'est-ce que le hashset java
Étape 2: Cliquer sur Réglages avancés du système .
Étape 3: Une boîte de dialogue s'ouvrira. Cliquez sur Variables d'environnement.
Étape 4: Si le CLASSPATH existe déjà dans les variables système, cliquez sur le bouton Modifier puis mettez un point-virgule (;) à la fin. Collez le chemin du fichier Java.jar du connecteur MySQL.
Si le CLASSPATH n'existe pas dans les variables système, cliquez sur le bouton Nouveau et tapez le nom de la variable comme CLASSPATH et la valeur de la variable comme C:Program FilesJavajre1.8MySQL-Connector Java.jar;.;
N'oubliez pas : mettez ;.; à la fin du CLASSPATH.
Différence entre PATH et CLASSPATH
CHEMIN | CHEMIN DE CLASSE |
---|---|
PATH est une variable d'environnement. | CLASSPATH est également une variable d'environnement. |
Il est utilisé par le système d'exploitation pour rechercher les fichiers exécutables (.exe). | Il est utilisé par Application ClassLoader pour localiser le fichier .class. |
Vous devez inclure le répertoire contenant les fichiers .exe. | Vous devez inclure tous les répertoires contenant des fichiers .class et JAR. |
La variable d'environnement PATH une fois définie, ne peut pas être remplacée. | La variable d'environnement CLASSPATH peut être remplacée en utilisant l'option de ligne de commande -cp ou -CLASSPATH pour les commandes javac et java. |
Comment définir CLASSPATH dans Windows à l'aide de l'invite de commande
Tapez la commande suivante dans votre invite de commande et appuyez sur Entrée.
set CLASSPATH=%CLASSPATH%;C:Program FilesJavajre1.8 t.jar;
Dans la commande ci-dessus, The set est une commande DOS interne qui permet à l'utilisateur de modifier la valeur de la variable. CLASSPATH est un nom de variable. La variable entourée du signe de pourcentage (%) est une variable d'environnement existante. Le point-virgule est un séparateur, et après le (;) il y a le PATH du fichier rt.jar.
interface comparable à Java
Comment fonctionne le dossier ext en Java
Le répertoire ext fonctionne un peu comme le CLASSPATH. Le répertoire ext fait partie du mécanisme de chargement de classe. Les classes disponibles dans les JAR dans le répertoire ext sont disponibles pour les applications Java.
Le tableau suivant montre la principale différence entre CLASSPATH et le mécanisme d'extension :
Caractéristiques | CHEMIN DE CLASSE | Mécanisme de prolongation |
---|---|---|
Ordre de chargement des classes | CLASSPATH se charge après le bootstrap et le chargement de l'extension. | ext se charge après le chargement du bootstrap mais avant le chargement de CLASSPATH. |
Portée | Il s'agit d'une application spécifique. Tous les JRE sur l'hôte correspondent à la variable d'environnement CLASSPATH. | Toutes les JVM s'exécutent dans un JRE java.ext.dirs spécifique. |
Nom du paquet | java.class.path est utilisé pour rechercher les répertoires et les archives JAR contenant les fichiers de classe. | java.ext.dirs est utilisé pour spécifier où le mécanisme d'extension charge les classes. |
spécification | Il est spécifié par son nom incluant l'extension.jar et le répertoire contenant les fichiers .class. | Tous les fichiers JAR dans les répertoires spécifiés sont chargés. |
Le mécanisme récupérera tous les fichiers .jar du répertoire d'extension même si le fichier n'a pas l'extension .jar. L'implémentation de ceci est que si l'on peut changer le nom d'un pot placé dans un répertoire classpath pour avoir une extension autre que .jar. Le caractère générique (*) ne le récupère pas. Cette technique ne fonctionnera pas avec le répertoire d'extension.
Comprenons le processus d'exécution à travers un exemple.
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()); } }
Compilez le fichier A.java. nous allons archiver le fichier A.class compilé dans A.jar. Placez ce fichier JAR dans un autre répertoire que le fichier B.class compilé.
Pour démontrer l'utilisation du chemin de classe, nous plaçons le fichier A.jar dans un répertoire C:JavaPrograms et accèderons à ce JAR via un caractère générique (*) que B pourra utiliser.
Nous avons constaté que B peut toujours charger la classe A. alors que nous l'avions supprimée du répertoire actuel. Le lanceur Java a été explicitement recherché C:JavaProgram. Il est également possible de charger la classe sans sa présence dans le même répertoire et sans spécification explicite du chemin de classe.
L'utilisation du mécanisme d'extension est souvent considérée comme un avantage, car toutes les applications qui utilisent ce JRE peuvent voir les mêmes classes sans avoir besoin de les spécifier explicitement sur le chemin de classe.
Que se passe-t-il si nous changeons le nom de A.jar en A.backup dans le même répertoire référencé par CLASSPATH. NoClassDefFoundError est rencontré lorsque nous faisons de même car la référence CLASSPATH n'a pas l'extension .jar.
convention de dénomination de Java