web-dev-qa-db-fra.com

Comment définir la variable CLASSPATH pour un dossier dans Ubuntu

Je sais que export CLASSPATH=/usr/local/Java/tools.jar:$CLASSPATH va ajouter tools.jar au CLASSPATH, mais je veux définir le dossier sur le CLASSPATH.

comme ça

export CLASSPATH=/usr/local/Java/lib/:$CLASSPATH

mais ça ne marche pas.

16
Ramesh Kotha

Tout d'abord, en général, définir la variable env varCLASSPATH cause généralement plus de problèmes qu'il n'en résout - car toutes les applications ne veulent/n'ont pas besoin du même chemin de classe et se cassent souvent lorsque des fichiers jar indésirables ou même inutiles sont inclus dans le chemin de classe. Une application Java ne doit inclure que le nombre minimal de bocaux requis, ni plus, ni moins.

Lorsque vous avez des applications spécifiques nécessitant la définition du chemin de classe, l'option de ligne de commande est généralement recommandée: Java -cp path1:path2:.... La commande des icônes du bureau peut être modifiée pour inclure ces options, ou les scripts Shell peuvent être modifiés pour inclure ces options.

Cela étant dit (et puisqu'il y a toujours des exceptions à la règle), alors, en fonction de la version de Java (cela nécessite Java 6 ou version ultérieure), vous pouvez spécifier qu'un répertoire entier jars être ajoutés au classpath en ajoutant un "*" à la fin d’un répertoire; par exemple, les éléments suivants:

 /dir1/foo.jar:/dir2/dir3:/dir5/dir6/*:etc...

Veux dire:

  • /dir1/foo.jar - (le seul fichier jar) sera ajouté au chemin de classe;
  • /dir2/dir3 - toutes les classes non jar'd de ce répertoire seront ajoutées au chemin de la classe (doit être dans la structure de package appropriée; par exemple, com.my.Foo.class doit être dans /dir2/dir3/com/my/Foo.class)
  • /dir5/dir6/* - tous les fichiers JAR de ce répertoire (c.-à-d. /dir5/dir6/*.jar) seront ajoutés au chemin de classe. Notez que ce "*" n'est pas un caractère générique (vous ne pouvez pas utiliser f*.jar ni même *.jar); c'est un caractère spécial indiquant "ajouter tous les pots"

En général, si vous devez ajouter un répertoire complet de fichiers JAR au chemin d'accès aux classes de l'application, l'application n'est pas correctement intégrée. Au lieu de cela, l'application devrait avoir un manifeste contenant la liste des bocaux dont elle dépend. Ou à tout le moins, un seul fichier jar doit être ajouté à votre chemin de classe et ce fichier jar peut contenir dans son manifeste la liste complète des fichiers JAR de certains sous-répertoires.

11
michael

si vous voulez définir définitivement classpath, 1) découvrez où Java est installé .. vous pouvez utiliser "whereis Java" openjdk-7/6 se trouve dans/usr/lib/jvm/.....

2) nous devons installer CLASSPATH dans/etc/environment

  Sudo gedit /etc/environment

3) ajoutez les préférences suivantes. (NE LAISSEZ aucun espace en tapant) (personnalisez-le en fonction de votre version Java et de votre installation) (ce chemin de base correspond à open jdk 7)

   Java_HOME="/usr/lib/jvm/Java-7-openjdk-i386/bin"

   export Java_HOME

   CLASSPATH=".:/usr/lib/jvm/Java-7-openjdk-i386/lib:/home/laptop/Desktop/a2"

   export CLASSPATH

répertoire séparé par ":"

2
rightkushagra

terminal ouvert et type

Sudo nano ~/.bashrc

ajoutez toutes les exportations dont vous avez besoin comme ...

export Java_HOME =/usr/local/Java/jdk1.6.0_06 (votre chemin)

export ANT_HOME =/opt/ant/Apache-ant-1.9.4

enfin redémarrer le terminal pour que les modifications prennent effet

0
mateen