IDE可识别ANTLR生成的代码,但Kotlin编译失败
我们试图在kotlin项目中使用ANTLR生成的java代码。代码已成功生成,Intellij IDE可识别代码并提供自动完成功能,但在编译项目时,Kotlin编译器会因ANTLR生成的java文件出现IDE可识别ANTLR生成的代码,但Kotlin编译失败,kotlin,gradle,intellij-idea,antlr4,Kotlin,Gradle,Intellij Idea,Antlr4,我们试图在kotlin项目中使用ANTLR生成的java代码。代码已成功生成,Intellij IDE可识别代码并提供自动完成功能,但在编译项目时,Kotlin编译器会因ANTLR生成的java文件出现未解析引用错误而失败 我们有以下设置: 爪哇14 Kotlin 1.4.10 梯度6.3 ANTLR4.8-1(带有antlrgradle插件) ANTLR解析器生成到build/generated src/ANTLR/main,IDE将其标记为generated sources root。生
未解析引用
错误而失败
我们有以下设置:
- 爪哇14
- Kotlin 1.4.10
- 梯度6.3
- ANTLR4.8-1(带有
gradle插件)antlr
build/generated src/ANTLR/main
,IDE将其标记为generated sources root
。生成文件的路径也会添加到Kotlin编译器类路径中compileJava
和compileKotlin
gradle任务都依赖于generateGrammarSource
ANTLR插件任务
下面是最小的可复制示例项目(运行gradlebuild
):
有什么想法吗?我们是否错过了项目的配置?没有回答您的问题,但您可以使用以下内容:?该示例似乎设置不正确。我尝试先用Gradle构建它,然后不用Gradle BS使用直接向上的命令行编译。它仍然没有建立。然后,我注意到目录结构设置不正确,因为-classpath不起作用。猜测它应该是
src/main/antlr/com/example/query
而不是src/main/antlr/com.example.query
。这修复了建筑,但天知道它是否有效。没有readme.md,无法构建…不好。谢谢你们的回答@kaby76,你对目录结构的观察解决了这个问题。出于某种原因,它生成了名为com.example.query
的主源目录(在src/main/antlr/
中),而不是为每个步骤创建子文件夹结构@我很高兴它能起作用。我会将您的观察结果作为问题发布在Github存储库中。