Проблемы командной строки Java с библиотеками .jar - PullRequest
7 голосов
/ 16 июня 2010

У меня есть один файл .java (driver.java), который я пытаюсь скомпилировать и запустить из командной строки.Он использует внешнюю библиотеку с именем EXT.jar, структура которой представляет собой просто папку с именем EXT с несколькими десятками классов в ней.

Итак, я запускаю:

javac -cp EXT.jar driver.java

Это компилирует класс простохорошо.

тогда при запуске:

java -cp EXT.jar driver

я получаю java.lang.NoClassDefFoundError.

Как ни странно, если я распаковываю JAR (так что теперь у меня есть папкав корневом каталоге с именем EXT) последняя команда работает просто отлично !!Драйвер будет выполнен!

Можно ли как-то заставить драйвер.class искать нужные файлы классов из EXT.jar/EXT/*class вместо реальной папки EXT?

Спасибо!

1 Ответ

19 голосов
/ 16 июня 2010

Вы компилируете класс в локальный каталог.Поэтому, когда вы запускаете его, вам нужно включить текущий каталог в ваш classpath.Например:

java -cp .;EXT.jar driver

Или в Linux:

java -cp .:EXT.jar driver

Имея то, что у вас есть, вы говорите, что ваш classpath - только EXT.jar (вместе с тем, что находится в переменной среды CLASSPATH) и ничего больше (поэтому текущий каталог, в котором находится driver.class, исключен)

...