Gradle Antlr插件失败无法使用Antlr 3.5.2初始化类org.antlr.tool.ErrorManager

时间:2019-03-05 14:42:33

标签: java gradle antlr

我正在尝试从以前使用Antlr Eclipse插件生成的旧项目中的Antlr v3语法文件运行生成源。我试图使用Gradle Antlr plugin,并试图使用最新的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.doProcess(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 个答案:

答案 0 :(得分:0)

似乎我自己通过在build.gradle文件中添加对antlr-runtime的依赖来解决它

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