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