我是ANTLR和ANTLRWorks的新手,所以我對此感到困惑: 我使用ANTLRWorks 2.1進行語法創建和隨後的詞法分析器創建,解析器(Java目標)。然後,我創建了一個小型的Eclipse項目,並從ANTLRWorks中導入了ANTLR4罐,以便按照ANTLR書中的示例手動調用詞法分析器和分析器。運行應用程序時,我得到以下異常:ANTLRWorks 2.1:在Eclipse中生成的Lexer + Parser導致UUID異常
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
然而,在ANTLRWorks TestRig運行相同的語法和輸入數據時,一切工作正常。 這裏怎麼回事?我已經發現了關於版本問題的類似帖子,但是沒有解決這個UUID問題。誰能幫我這個?
在此先感謝!
由於我正在引用(來自Eclipse項目)ANTLRWorks發行版附帶的ANTLR運行時.jar,可能會導致此類版本問題? – Nebelung
好吧,就像我說的,我不知道java工具足以幫助你,但是嘗試下載antlr,然後從命令行生成解析器,並使用您下載的antlr版本中提供的運行時。如果這樣的話,這意味着你所擁有的antlrworks版本有問題。 –