我很难让Intellij识别从antlr4生成的源代码。任何对生成代码的引用都显示为错误,代码完成不起作用,等等。
我使用maven和antlr4-maven插件来生成代码。我的代码引用生成的代码,可以在maven下编译和构建。生成的代码位于/目标值/生成源/antlr4 4下,这正是Intellij所期望的。
我已经尝试过常见的修复方法,比如重新导入maven项目、更新文件夹、失效缓存等等。
有人以前见过这个吗?有没有一种方法可以直接指向Intellij中生成的源?
发布于 2014-10-14 16:09:34
我有一个我认为可能是类似的问题。我是IntelliJ的新手,所以我在某种程度上猜测。
项目中的gen文件夹是褐色的(即资源)还是蓝色的(源代码)?
在我设法将gen文件夹注册为包含源代码的文件夹之前,我无法让我的项目识别生成的代码。
抱歉地说,你可能需要摆弄它--我不记得我是怎么做的--但是在我改变了它之后一切都好起来了。
发布于 2016-03-11 18:02:25
问题所在
target/generated-sources/antlr4
不是自动标记为源dir,而是它的直接子dir com.example
是。Intellij未能为target/generated-sources/antlr4/com.example
中的类检测到合适的包。
致因
源文件*.g4
在src/main/antlr4/com.example
中,但实际上它应该是src/main/antlr4/com/example
。注意/
。您可能忘了在Idea中将src/main/antlr4
标记为源dir,当您认为您正在创建包结构时,实际上只创建了一个名为com.example
的dir。
修复
将src/main/antlr4
标记为源dir,创建适当的目录结构src/main/antlr4/com/example
。重建。
替代修复
转到Project Modules - Source文件夹,并找到target/generated-sources/antlr4/com.example
-单击Edit属性并将包前缀设置为com.example
。
发布于 2020-06-18 14:40:53
我的问题有点类似于@spilymp's
我把*.g4
文件直接放进了src/main/antlr4
.
├── src/
| └── main/
| ├── antlr/
| | ├── Main.g4
| | └── imported.g4
| └── java/
| └── com/
| └── test/
| └── Test.java
这导致源在default
包中生成。我更改了包结构,使其与java的结构匹配:
.
├── src/
| └── main/
| ├── antlr/
| | ├── com/
| | | └── test/
| | | └── Main.g4
| | └── imports/
| | └── imported.g4
| └── java/
| └── com/
| └── test/
| └── Test.java
(请注意,进口需要直接在src/main/antlr4/imports
中进行)
之后,我只从maven菜单运行antlr4
目标(Module > Plugins > antlr4 >antlr4 4:antlr4 4),它生成默认位置(target/generated-sources/antlr4
)中的源,其中已经被Intellij标记为蓝色的、生成的源图标,MainParser
现在可以导入了!
https://stackoverflow.com/questions/25902126
复制相似问题