65 votes

Classpath ne fonctionne pas sous Linux

Quelqu'un a une idée de la raison pour laquelle cette commande fonctionne bien sous Windows, mais sous Linux, j'obtiens une ClassNotFoundException game.ui.Main

 java -cp ".;lib/*" game.ui.Main -Xms64m -Xmx128m

ma structure de dossier ressemble à ceci: lib/ - Pots jeu/ - Fichiers de classe

Il s'agit du dernier Java 6.

32voto

Mikel Points 10000

Essayez de remplacer le point-virgule par un deux-points.

Le séparateur CLASSPATH dépend de la plate-forme et est le même que le caractère renvoyé par java.io.File.pathSeparatorChar .

7voto

Wender Points 483

Les fenêtres:

java -cp file.jar;dir/* my.app.ClassName

Linux :

java -cp file.jar:dir/* my.app.ClassName

Rappeler:

  • Le séparateur de chemin Windows est ;
  • Le séparateur de chemin Linux est :
  • Sous Windows, si l'argument cp ne contient pas d'espace blanc, les guillemets sont facultatifs

4voto

pinkston00 Points 108

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 $@

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X