首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Intellij将不识别antlr生成的源代码。

Intellij将不识别antlr生成的源代码。
EN

Stack Overflow用户
提问于 2014-09-17 23:51:58
回答 7查看 11.3K关注 0票数 15

我很难让Intellij识别从antlr4生成的源代码。任何对生成代码的引用都显示为错误,代码完成不起作用,等等。

我使用maven和antlr4-maven插件来生成代码。我的代码引用生成的代码,可以在maven下编译和构建。生成的代码位于/目标值/生成源/antlr4 4下,这正是Intellij所期望的。

我已经尝试过常见的修复方法,比如重新导入maven项目、更新文件夹、失效缓存等等。

有人以前见过这个吗?有没有一种方法可以直接指向Intellij中生成的源?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-10-14 16:09:34

我有一个我认为可能是类似的问题。我是IntelliJ的新手,所以我在某种程度上猜测。

项目中的gen文件夹是褐色的(即资源)还是蓝色的(源代码)?

在我设法将gen文件夹注册为包含源代码的文件夹之前,我无法让我的项目识别生成的代码。

抱歉地说,你可能需要摆弄它--我不记得我是怎么做的--但是在我改变了它之后一切都好起来了。

票数 3
EN

Stack Overflow用户

发布于 2016-03-11 18:02:25

问题所在

target/generated-sources/antlr4不是自动标记为源dir,而是它的直接子dir com.example是。Intellij未能为target/generated-sources/antlr4/com.example中的类检测到合适的包。

致因

源文件*.g4src/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

不同但相关的问题https://stackoverflow.com/a/35947085/2587343

票数 15
EN

Stack Overflow用户

发布于 2020-06-18 14:40:53

我的问题有点类似于@spilymp's

我把*.g4文件直接放进了src/main/antlr4

代码语言:javascript
运行
复制
.
├── src/
|   └── main/
|       ├── antlr/
|       |   ├── Main.g4
|       |   └── imported.g4
|       └── java/
|           └── com/
|               └── test/
|                   └── Test.java

这导致源在default包中生成。我更改了包结构,使其与java的结构匹配:

代码语言:javascript
运行
复制
.
├── 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现在可以导入了!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25902126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档