Lors de la programmation en langage Java, vous faites d'autres classes disponibles à la classe que vous avez écrit en mettant quelque chose de ce genre en haut de votre fichier source:
import org.javaguy.coolframework.MyClass
ou parfois, vous 'importation en bloc" trucs en disant:
import org.javaguy.coolframework.*
tard dans votre programme quand vous dites:
mine = MyClass.new();
la machine virtuelle java peut savoir pour charger votre classe compilée.
Il serait impossible d'avoir la VM regarder à travers tous les dossiers sur votre ordinateur, vous devez fournir la VM une liste des endroits à regarder. Ceci est fait en mettant le dossier et les fichiers jar sur votre classpath.
Avant de nous parler de la façon dont la classe est définie, permet de parler de .les fichiers de classe, les paquets, et .les fichiers jar.
Tout d'abord, supposons que MyClass est quelque chose que vous avez construit dans le cadre de votre projet, et il est dans un répertoire de votre projet appelé "production". L' .fichier de classe serait à 'output/org/javaguy/coolframework/MyClass.class' (avec tous les autres fichiers dans le paquet). pour obtenir ce fichier, votre chemin serait tout simplement besoin de contenir le dossier "sortie" ... pas l'ensemble de la structure, depuis votre instruction d'importation fournit toutes les informations de la machine virtuelle.
Maintenant, laisse supposer que vous bundle CoolFramework dans une .fichier jar, et de mettre CoolFramework.jar dans un répertoire lib de votre projet. vous aurez besoin de mettre 'lib/CoolFramework.jar" dans votre classpath... la VM va regarder à l'intérieur th fichier jar de l' 'org/javaguy/coolpackage' partie, et de trouver votre classe.
Ainsi, les chemins de classe contiennent:
- les fichiers jar, et
- les chemins vers le HAUT de l'emballage des hiérarchies.
Comment définissez-vous votre classpath?
La première façon, tout le monde semble d'apprendre, c'est avec les variables d'environnement. Sur une machine unix, vous pouvez dire quelque chose comme:
export CLASSPATH=/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/
sur une machine windows, vous devez aller à vos paramètres d'environnement et d'ajouter ou de modifier la valeur qui est déjà là.
La deuxième façon est d'utiliser l'option-cp paramètre lors du démarrage de Java, comme ceci:
java -cp "/home/myaccount/myproject/lib/CoolFramework.jar:/home/myaccount/myproject/output/" MyMainClass
Une variante de cette troisième voie est souvent fait avec un .sh ou .fichier bat qui calcule le chemin de la classe et le transmet à java par le paramètre cp.
Alors, quel est le meilleur moyen de le faire?
Réglage des trucs à l'échelle mondiale via des variables d'environnement est mauvais... en général, pour le même genre de raisons que les variables globales sont mauvais. Vous modifiez la variable d'environnement CLASSPATH si un programme fonctionne, et vous finissez à la rupture d'un autre programme.
Le cp est le chemin à parcourir... en général, je sais que mes variable d'environnement CLASSPATH est une chaîne vide où je développe, chaque fois que possible, de sorte que j'évite chemin de classe global questions (certains outils ne sont pas heureux quand le chemin de classe global est vide si - je sais des deux communes, les méga-mille dollars sous licence J2EE et Java serveurs qui ont ce genre de problème avec leurs outils de ligne de commande).