Classpath не работает под linux
У кого-нибудь есть идея, почему эта команда отлично работает в Windows, но в Linux я получаю игру ClassNotFoundException.пользовательский интерфейс.Главное
java -cp ".;lib/*" game.ui.Main -Xms64m -Xmx128m
моя структура папок выглядит так: lib / - банки game / - Class files
Это последняя версия Java 6.
4 ответа:
синтаксис пути к классам зависит от ОС. От Википедия:
будучи тесно связаны с файлом система, путь к классам командной строки синтаксис зависит от операционной системы система. Например:
на всех Unix-подобных операционных систем (например, Linux и Mac OS X), структура каталогов в Unix синтаксис , с отдельными путями к файлам, разделенными колон.)":"(
в Windows, структура каталогов есть Синтаксис Windows, и каждый файл путь должен быть разделен точкой с запятой (";").
Это не применяется, когда путь к классам определяется в файлах манифеста, где каждый путь к файлу должен быть разделен символом пробел (" "), независимо от операционная система.
попробуйте поменять точку с запятой на двоеточие.
разделитель classpath-это зависит от платформы, и так же, как персонаж, возвращенные Ява.Ио.Файл.pathSeparatorChar.
пути также важны при использовании путей к классам в сценариях, предназначенных для запуска на обеих платформах: Windows (т. е. cygwin) и Linux. Когда я делаю это, я включаю такую функцию для пути к классам. Команда "cygpath" с параметром "- w " преобразует пути в пути в стиле Windows. Итак, в этом примере "/home/user/lib/this.jar " будет преобразован во что-то вроде "C:\Cygwin\home\user\lib\this.банку"
#!/bin/bash function add_java_classpath() { local LOCAL1= 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 $@