Java класс не найден исключение - PullRequest
3 голосов
/ 10 августа 2011

Я пытаюсь запустить программу на Java и где-то в процессе выполнения я получаю исключение

java.lang.NoClassDefFoundError: antlr/TokenStream

.Я новичок в программировании на Java, поэтому не знаю, что это значит.Я просмотрел некоторые другие вопросы по тем же вопросам, и они мне не очень помогли - либо я не мог последовать за ответом, либо он не подходил для моего случая.Есть идеи?

Ответы [ 5 ]

5 голосов
/ 10 августа 2011

найдите antlr.jar и поместите его в свой путь к классу

2 голосов
/ 10 августа 2011

java.lang.NoClassDefFoundError генерируется, когда определенный класс, на который ссылается ваша программа, недоступен в classpath. Classpath - это список путей / каталогов, в которых среда выполнения ищет классы, используемые в выполняемом классе.

Полученное сообщение об ошибке означает, что antlr/TokenStream недоступно в вашем пути к классам.

Чтобы включить соответствующий jar (antlr.jar) в путь к классам, вы можете использовать флаг -cp во время работы:

java -cp .;path_to_antlr.jar yourClass

или

java -cp .;path_to_antlr.jar -jar yourJar.jar
0 голосов
/ 10 августа 2011

Вы указали ссылку на класс Java, но по какой-то причине этот класс не существует в образе выполнения, который вы запускаете. Например, если вы создали новый класс XYZ, например: XYZ xyz = new XYZ (), но такого класса не существует, вы получите ошибку, аналогичную приведенной выше. В прошлом я получал такую ​​ошибку, если я неправильно написал ссылку на класс или, как правило, если класс, на который я ссылался, каким-то образом не был включен в мой jar Проверьте флягу или каталог, в котором вы выполняете выполнение. Вы видите класс, на который вы ссылаетесь? Могу поспорить, что это отсутствует.

Эллиот

0 голосов
/ 10 августа 2011

Брошенный, если виртуальная машина Java или экземпляр ClassLoader пытаются загрузить определение класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованием нового выражения) и нет определение класса может быть найдено.

Искал искомое определение класса, когда выполнялся в данный момент класс был скомпилирован, но определение больше не найдено.

Взять от здесь .

0 голосов
/ 10 августа 2011

Он ищет определение класса, которого не находит в пути к классам.

Из JavaDoc's ,

Брошен, если виртуальная машина Java или экземпляр ClassLoader пытаются загрузить определение класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованием нового выражения) и нет определение класса может быть найдено.

...