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

Je sais que l’ export CLASSPATH=/usr/local/java/tools.jar:$CLASSPATH appenda tools.jar à CLASSPATH, mais je veux définir un dossier sur CLASSPATH.

comme ça

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

mais ça ne marche pas.

Tout d’abord, en général, définir la CLASSPATH env CLASSPATH provoque 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 indésirables ou même inutiles sont inclus dans le chemin de classe. Une application java ne devrait inclure que le nombre minimum de bocaux requirejs, ni plus, ni moins.

Lorsque vous avez des applications spécifiques et individuelles qui nécessitent que le chemin de classe soit défini, l’option de ligne de commande est généralement préférée: java -cp path1:path2:... La commande des icons du bureau peut être modifiée pour inclure ces options, ou des scripts shell peuvent être modifiés pour inclure ces options.

Cela étant dit (et puisqu’il y a toujours des exceptions à la règle), vous pouvez spécifier qu’en fonction de la version de java (cela nécessite java version 6 ou ultérieure), un répertoire entier de fichiers jars sera ajouté au chemin de classe 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 /dir1/foo.jar jar) sera ajouté au /dir1/foo.jar ;
  • /dir2/dir3 – toutes les classes non jar’d de ce répertoire seront ajoutées au chemin de la classe (doivent être dans la structure de paquet appropriée; par exemple, com.my.Foo.class doit être dans /dir2/dir3/com/my/Foo.class )
  • /dir5/dir6/* – tous les /dir5/dir6/* de ce répertoire (par exemple, /dir5/dir6/*.jar ) seront ajoutés au /dir5/dir6/*.jar . 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 “append tous les pots”

En général, si vous devez append un répertoire complet de fichiers JAR au chemin d’access aux classes de l’application, celle-ci 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.

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 lors du typage) (personnalisez-le en fonction de votre version et de l’installation Java) (ce chemin de base est réservé à 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 “:”

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

Les caractères génériques ont été introduits à partir de Java 6. Les entrées de chemin d’access aux classes peuvent contenir le caractère générique *, qui est considéré comme équivalent à la spécification d’une liste de tous les fichiers du répertoire portant l’extension .jar ou .JAR.

 java -cp "lib/*" -jar %MAINJAR% 

Si vous n’avez besoin que de pots spécifiques, vous devrez les append individuellement. La chaîne de chemin de classe n’accepte pas les caractères génériques tels que Jar *, .jar, hiber, etc.

Exemple

L’entrée suivante ne fonctionne pas:

 java -cp "Halo.jar;lib/*.jar" ni.package.MainClass 

L’entrée correcte est:

 java -cp "Halo.jar;lib/*" ni.package.MainClass 

En savoir plus sur … Java Classpath

Rj