【问题标题】:Gradle Antlr plugin fails Could not initialize class org.antlr.tool.ErrorManager with Antlr 3.5.2Gradle Antlr 插件失败无法使用 Antlr 3.5.2 初始化类 org.antlr.tool.ErrorManager
【发布时间】:2019-03-05 14:42:33
【问题描述】:

我正在尝试从以前使用 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的源代码,并不清楚错误是什么。

【问题讨论】:

    标签: java gradle antlr


    【解决方案1】:

    似乎我自己通过在 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'
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-07
      • 1970-01-01
      • 2020-09-30
      • 2020-07-18
      • 2016-12-25
      • 2018-12-09
      • 2022-01-18
      相关资源
      最近更新 更多