在Mac上使用Antlr4和IntelliJ的RuntimeException

时间:2015-07-06 06:11:32

标签: intellij-idea antlr4

我使用IntelliJ 14.1.3及其Antlr4-Plugin在Mac Yosemite上使用Antlr4编写语法代码。 我添加了antlr-4.5-complete.jar作为库,并使用插件工具创建了lexer和parser文件。

尝试使用这些文件我得到了一些经验,说明antlr4.5生成了代码但是版本4.4中存在antlr的运行时。这个版本来自哪里,因为我从未安装过它?

我已阅读此帖How to configure antlr4 plugin for Intellij IDEA 特别是这一部分:

  

该插件似乎使用了它包含的ANTLR版本   而不是您在项目中使用的ANTLR版本   库,所以使用插件可以生成Java源代码   不能在项目中编译的代码。

但它没有帮助,因为它没有说明如何解决问题。

问题仅出现在我的Mac上,Windows似乎没有受到影响。

这是堆栈跟踪:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at GeneratePlayerAIShots.main(GeneratePlayerAIShots.java:47)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: org.antlr.v4.runtime.RuntimeMetaData$VersionMismatchException: ANTLR Runtime version 4.5 used for parser compilation does not match the current runtime version 4.4
    at org.antlr.v4.runtime.RuntimeMetaData.checkVersion(RuntimeMetaData.java:371)
    at PlayerAIShotsLexer.<clinit>(PlayerAIShotsLexer.java:13)
    ... 6 more 

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,我想让每个人都参与阅读我关心的解决方案:

问题是我在MacBook上的安装有一个过时的antlr-4.4.jar。它在“/ Library / Extensions /”文件夹中未被检测到,因此已经使用了IntelliJ和classpath(版本4.5)中添加的库。

我用新版本交换旧jar并删除项目中所有生成的Lexer / parse文件等。 最后它起作用: - )