Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Antlr4 ANTLRWorks 2.1:生成的Lexer+;Eclipse中的解析器导致UUID异常_Antlr4_Antlrworks - Fatal编程技术网

Antlr4 ANTLRWorks 2.1:生成的Lexer+;Eclipse中的解析器导致UUID异常

Antlr4 ANTLRWorks 2.1:生成的Lexer+;Eclipse中的解析器导致UUID异常,antlr4,antlrworks,Antlr4,Antlrworks,我是ANTLR和ANTLRWorks的新手,所以我对这一点很困惑: 我正在使用ANTLRWorks 2.1创建语法,并随后创建lexer和parser(Java目标)。然后,我创建了一个小型Eclipse项目,并从ANTLRWorks导入了ANTLR4 JAR,以手动调用lexer和解析器,如ANTLR书籍示例中所述。运行应用程序时,我会遇到以下异常: Caused by: java.lang.UnsupportedOperationException: java.io.InvalidClass

我是ANTLR和ANTLRWorks的新手,所以我对这一点很困惑: 我正在使用ANTLRWorks 2.1创建语法,并随后创建lexer和parser(Java目标)。然后,我创建了一个小型Eclipse项目,并从ANTLRWorks导入了ANTLR4 JAR,以手动调用lexer和解析器,如ANTLR书籍示例中所述。运行应用程序时,我会遇到以下异常:

Caused by: java.lang.UnsupportedOperationException: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not  deserialize ATN with UUID 33761b2d-78bb-4a43-8b0b-4f5bee8aacf3 (expected e4178468-df95-44d0-ad87-f22a5d5fb6d3).
    at org.antlr.v4.runtime.atn.ATNSimulator.deserialize(ATNSimulator.java:111)
    at org.antlr.v4.runtime.atn.ATNSimulator.deserialize(ATNSimulator.java:90)
    at TestLexer.<clinit>(TestLexer.java:177)
    ... 1 more
Caused by: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with UUID 33761b2d-78bb-4a43-8b0b-4f5bee8aacf3 (expected e4178468-df95-44d0-ad87-f22a5d5fb6d3).
    ... 4 more
原因:java.lang.UnsupportedOperationException:java.io.InvalidClassException:org.antlr.v4.runtime.atn.atn;无法使用UUID 33761b2d-78bb-4a43-8b0b-4f5bee8aacf3(预期为e4178468-df95-44d0-ad87-f22a5d5fb6d3)反序列化ATN。
反序列化(ATNSimulator.java:111)
反序列化(ATNSimulator.java:90)
在TestLexer。(TestLexer.java:177)
... 还有一个
原因:java.io.InvalidClassException:org.antlr.v4.runtime.atn.atn;无法使用UUID 33761b2d-78bb-4a43-8b0b-4f5bee8aacf3(预期为e4178468-df95-44d0-ad87-f22a5d5fb6d3)反序列化ATN。
... 4更多
但是,当在ANTLRWorks测试装备中运行相同的语法和输入数据时,一切正常。 这里出了什么问题?我已经找到了关于版本控制问题的类似帖子,但是没有一篇是关于UUID问题的。有人能帮我吗


提前谢谢

最可能的原因是您在解析器生成时和运行时使用了不同版本的antlr运行时

确保在这两种情况下使用完全相同的antlr版本,错误就会消失


免责声明:我可能错了,因为我在.Net中使用了antlr。

AntlWorks使用了antlr的非标准版本,以支持其某些编辑器功能(代码完成等)。它的设计方式支持正确的代码生成,但是为了编译和运行解析器,您需要使用来自的参考ANTLR库。

因为我引用(来自Eclipse项目)AntlWorks发行版附带的ANTLR runtime.jar,那么是什么导致了这样的版本控制问题呢,正如我所说的,我对java工具的了解还不足以精确地帮助您,但是请尝试下载antlr,然后从命令行生成解析器,并使用您下载的antlr版本中提供的运行时。如果这样做有效,我想这意味着你的antlrworks版本有问题。