Проблемы командной строки Java с .jar библиотеками

У меня есть единственный .java (driver.java) файл, который я пытаюсь скомпилировать и выполнить от командной строки. Это пользуется внешней названной библиотекой EXT.jar, чья структура является просто папкой под названием РАСШИРЕНИЕ с несколькими дюжинами классов в нем.

Таким образом, я работаю:

javac -cp EXT.jar driver.java

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

затем, когда я работаю:

java -cp EXT.jar driver

Я получаю a java.lang.NoClassDefFoundError.

Достаточно странно, если я распаковываю JAR (поэтому теперь, у меня есть папка в корневом каталоге под названием РАСШИРЕНИЕ), последняя команда работает просто великолепно!! Драйвер выполнится!

Есть ли любой способ, от которого я могу заставить driver.class искать файлы класса потребности EXT.jar/EXT/*class вместо фактической папки EXT?

Спасибо!

7
задан elect 17 October 2016 в 10:11
поделиться

1 ответ

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

java -cp .;EXT.jar driver

Или в linux:

java -cp .:EXT.jar driver

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

19
ответ дан 6 December 2019 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: