Tout le monde a une idée de la raison pour laquelle cette commande fonctionne correctement sous Windows, mais sous Linux, j'obtiens un jeu ClassNotFoundException game.ui.Main
Java -cp ".;lib/*" game.ui.Main -Xms64m -Xmx128m
ma structure de dossiers ressemble à ceci: lib/- Jars game/- Class files
Ceci est le dernier Java 6.
La syntaxe du chemin de classe dépend du système d'exploitation. De Wikipedia :
Étant étroitement associée au système de fichiers, la syntaxe de chemin de classe en ligne de commande dépend du système d'exploitation. Par exemple:
sur tous les systèmes d'exploitation de type Unix (tels que Linux et Mac OS X), la structure de répertoires a une syntaxe Unix, avec des chemins de fichiers séparés séparés par deux points (":").
sous Windows, la structure du répertoire a une syntaxe Windows et chaque chemin de fichier doit être séparé par un point-virgule (";").
Cela ne s'applique pas lorsque le chemin de classe est défini dans des fichiers manifeste, où chaque chemin de fichier doit être séparé par un espace (""), quel que soit le système d'exploitation.
Essayez de changer le point-virgule en deux-points.
Le séparateur CLASSPATH dépend de la plate-forme et est identique au caractère renvoyé par Java.io.File.pathSeparatorChar .
Les chemins sont également importants lors de l'utilisation de chemins de classe dans des scripts destinés à être exécutés sur les deux plates-formes: Windows (c'est-à-dire cygwin) et Linux. Lorsque je fais cela, j'inclus une fonction comme celle-ci pour le chemin de classe. La commande 'cygpath' avec l'option '-w' convertit les chemins en chemins de style Windows. Ainsi, dans cet exemple, "/home/user/lib/this.jar" serait converti en quelque chose comme "C:\Cygwin\home\user\lib\this.jar"
#!/bin/bash
function add_Java_classpath() {
local LOCAL1=$1
if [ "$OSTYPE" == cygwin ]; then
LOCAL1="$(cygpath -C ANSI -w $LOCAL1)"
fi
if [ -z "$Java_CLASSPATH" ]; then
Java_CLASSPATH="$LOCAL1"
Elif [ "$OSTYPE" != cygwin ]; then
Java_CLASSPATH="${Java_CLASSPATH}:$LOCAL1"
else
Java_CLASSPATH="${Java_CLASSPATH};$LOCAL1"
fi
}
add_Java_classpath /home/user/lib/this.jar
add_Java_classpath /usr/local/lib/that/that.jar
Java -cp "${Java_CLASSPATH}" package.Main $@
Windows:
Java -cp file.jar;dir/* my.app.ClassName
Linux:
Java -cp file.jar:dir/* my.app.ClassName
Rappel:
;
: