Mac 上 Antlr4 和 IntelliJ 的 RuntimeException
RuntimeException with Antlr4 and IntelliJ on Mac
我使用 IntelliJ 14.1.3 及其 Antlr4-Plugin 在 Mac Yosemite 上使用 Antlr4 编写语法代码。
我添加了 antlr-4.5-complete.jar 作为库,并使用插件工具创建词法分析器和解析器文件。
尝试使用这些文件时,我得到了一些预期,指出 antlr4.5 生成了代码,但在 4.4 版中有 antlr 的运行时。这个版本是哪里来的,我从来没有安装过它?
我已经读过了 post How to configure antlr4 plugin for Intellij IDEA
尤其是这一部分:
it appears that the plugin uses the version of ANTLR it contains
rather than the version of ANTLR you are using in your project as a
library, so using the plugin it is possible to generate Java source
code that will not compile within your project.
但它没有帮助,因为它没有说明如何解决问题。
问题只出现在我的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
我好像找到了解决方案,希望大家参与阅读我的解决方案,关注的人:
问题是我在 MacBook 上安装的 antlr-4 已过时。4.jar。它在文件夹“/Library/Extensions/”中未被检测到,因此已被用来代替 IntelliJ 和类路径(版本 4.5)中添加的库。
我用新版本交换了旧 jar 并删除了项目中所有生成的 Lexer/parse 文件等。
最后它起作用了:-)
我使用 IntelliJ 14.1.3 及其 Antlr4-Plugin 在 Mac Yosemite 上使用 Antlr4 编写语法代码。 我添加了 antlr-4.5-complete.jar 作为库,并使用插件工具创建词法分析器和解析器文件。
尝试使用这些文件时,我得到了一些预期,指出 antlr4.5 生成了代码,但在 4.4 版中有 antlr 的运行时。这个版本是哪里来的,我从来没有安装过它?
我已经读过了 post How to configure antlr4 plugin for Intellij IDEA 尤其是这一部分:
it appears that the plugin uses the version of ANTLR it contains rather than the version of ANTLR you are using in your project as a library, so using the plugin it is possible to generate Java source code that will not compile within your project.
但它没有帮助,因为它没有说明如何解决问题。
问题只出现在我的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
我好像找到了解决方案,希望大家参与阅读我的解决方案,关注的人:
问题是我在 MacBook 上安装的 antlr-4 已过时。4.jar。它在文件夹“/Library/Extensions/”中未被检测到,因此已被用来代替 IntelliJ 和类路径(版本 4.5)中添加的库。
我用新版本交换了旧 jar 并删除了项目中所有生成的 Lexer/parse 文件等。 最后它起作用了:-)