A NoClassDefFoundError
в основном означает, что класс находился в пути к классам во время компиляции, но отсутствует в пути к классам во время выполнения.
В вашем случае при выполнении с помощью java.exe
из командной строки вам необходимо указать classpath в аргументе -cp
или -classpath
. Или, если это файл JAR, вам нужно указать его в записи class-path
его файла MANIFEST.MF
.
Значением аргумента / записи может быть либо абсолютный, либо относительный путь файловой системы к папке, содержащей все файлы .class
, или к отдельному файлу .jar
. Вы можете разделять пути, используя точку с запятой ;
. Если путь содержит пробелы, вам нужно заключить в него конкретный путь двойными кавычками "
. Пример:
java -cp .;c:/path/to/file.jar;"c:/spacy path/to/classes" mypackage.MyClass
Чтобы сэкономить время на ввод и редактирование аргумента в командной строке каждый раз, используйте файл .bat
.
Редактировать : Я должен был понять, что вы используете операционную систему на основе Unix. Приведенные выше примеры ориентированы на Windows. В случае Unix-подобных платформ вы можете следовать тем же правилам, но вам нужно разделять пути, используя двоеточие :
, и вместо конечного пакетного файла используйте файл .sh
.
java -cp .:/path/to/file.jar:"/spacy path/to/classes" mypackage.MyClass