Замена аргумента classpath переменной среды CLASSPATH - PullRequest
2 голосов
/ 21 декабря 2011

Требования:

  • Только для командной строки, т.е. без IDE
  • Не хотите использовать classpath аргумент
  • ОС: OS X v10.6.8

Шаги:

  • Настройка переменной среды CLASSPATH: export CLASSPATH="/path-jar-files-are-at/*"
  • Скомпилируйте мое Java-приложение: javac MyApp.java
  • Запустите мое Java-приложение: java MyApp

После запуска появляется следующая ошибка:

Exception in thread "main" java.lang.NoClassDefFoundError: MyApp
Caused by: java.lang.ClassNotFoundException: MyApp

Использование аргумента classpath не имеет этой проблемы

  • Скомпилируйте мое Java-приложение: javac -classpath /path-jar-files-are-at/* MyApp.java
  • Запустите мое Java-приложение: java -classpath /path-jar-files-are-at/* MyApp

Есть идеи?

1 Ответ

0 голосов
/ 21 декабря 2011

CLASSPATH не должен содержать завершающий символ "/ *" - это не даст вам действительный путь к классу.Оболочка расширяет / * и разделяет список пробелами / символами новой строки - вместо символа ":".

Если вы все еще действительно хотите, чтобы он работал (динамически), попробуйте что-то вроде этого:

export CP=`ls /path-jar-files-are-at/*`; CP=`echo $CP | sed 's/\.jar\s/.jar:/g'`; CP="$CP:/path-jar-files-are-at"
...