Сбой плагина Gradle Antlr Не удалось инициализировать класс org.antlr.tool.ErrorManager с помощью Antlr 3.5.2

#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'
}