У меня есть единственный .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?
Спасибо!
Вы компилируете класс в локальный каталог. Поэтому, когда вы запустите его, вам нужно включить текущий каталог в свой путь к классам. Например:
java -cp .;EXT.jar driver
Или в linux:
java -cp .:EXT.jar driver
В том виде, в каком он у вас есть сейчас, вы говорите, что ваш путь к классам только EXT.jar (вместе с тем, что находится в переменной среды CLASSPATH) и ничего else (поэтому текущий каталог, в котором находится driver.class, исключается)