#java #gradle #antlr
#java #gradle #antlr
Вопрос:
Я пытаюсь запустить сгенерированный исходный код из файлов грамматики Antlr v3 из более старого проекта, ранее созданного с помощью плагина Antlr Eclipse. Я пытался использовать плагин Gradle Antlr и пытался использовать последнюю версию antlr 3 jar в качестве зависимости (3.5.2). Моя среда — Mac OSX, и я использую Java 8.
В моем build.gradle у меня есть
apply plugin: 'antlr'
dependencies {
antlr "org.antlr:antlr:3.5.2"
antlr group:'org.antlr', name: 'ST4', version: '4.1'
}
Запуск задачи generateGrammarSource приводит к ошибке:
Не удалось запустить Gradle ANTLR Worker, не удалось инициализировать класс org.antlr.tool.ErrorManager
параметр —stacktrace содержит ошибку инициализации класса для этого класса
Вызвано: java.lang.Ошибка NoClassDefFoundError: не удалось инициализировать класс org.antlr.tool.ErrorManager в org.antlr.Tool.process(Tool.java:426) в org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) в org.gradle.api.plugins.antlr.internal.AntlrExecuter$Antlr3Tool.invoke(AntlrExecuter.java:72) в org.gradle.api.plugins.antlr.internal.AntlrExecuter$AntlrTool.Выполните обработку (AntlrExecuter.java:143) в org.gradle.api.plugins.antlr.internal.AntlrExecuter$AntlrTool.process(AntlrExecuter.java:113) в org.gradle.api.plugins.antlr.internal.AntlrExecuter.runAntlr(AntlrExecuter.java:51) по org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:100) по org.gradle.process.internal.worker.request.WorkerAction.runThenStop(WorkerAction.java:83) … еще 8
Я не нашел никаких похожих ошибок, и, посмотрев на исходный код ErrorManager, неясно, в чем ошибка.
Ответ №1:
Кажется, я решил это сам, добавив еще одну зависимость от antlr-runtime в файл build.gradle
dependencies {
antlr "org.antlr:antlr:3.5.2"
antlr "org.antlr:antlr-runtime:3.5.2"
antlr group:'org.antlr', name: 'ST4', version: '4.1'
}