Intellij will not recognize antlr generated source code

邮差的信 提交于 2019-12-03 11:19:34

I had what I think may have been a similar issue. I am new to IntelliJ, so I am guessing to some extent.

Is the gen folder in your project brown (i.e. a resource) or blue (source code)?

I could not get my project to recognize generated code until I managed to get the gen folder registered as one containing source code.

Sorry to say you may need to fiddle with it - I cannot recall how I did it - but all was well after I changed this.

Vlastimil Ovčáčík

The problem

target/generated-sources/antlr4 is not automatically marked as source dir, instead its direct subdir com.example is. Intellij Idea fails to detect proper package for classes inside target/generated-sources/antlr4/com.example.

The cause

The source file *.g4 is in src/main/antlr4/com.example, but it actually it should be src/main/antlr4/com/example. Note the /. You probably forgot to mark src/main/antlr4 as source dir in Idea, and when you thought you are creating package structure, you actually just created single dir called com.example.

The fix

Mark src/main/antlr4 as source dir, create proper directory structure src/main/antlr4/com/example. Rebuild.

Alternative fix

Go to Project Structure - Modules - Source Folders and find the target/generated-sources/antlr4/com.example - click Edit properties and set Package prefix to com.example.


Different but related problem here

It turns out that my fiddling with preferences caused this issue. If anyone else has this problem:

As v0rl0n mentioned, first make sure the gen folder is listed as a source. Go to Module Settings -> Modules -> Sources.
Look to the right for the blue Source Folders. Ensure your generated source folders are listed (they should have a [generated] flag on the row).

If your generated source directory is listed there, and they are still not being recognized, go to Preferences -> File Types. Look in the Ignore files and folders field. Make sure you don't have anything listed that will match for your generated sources directory.

In my case, I had added target to this list, which caused my problem, and was a real pain to find.

Steps that worked for me:

  1. Open Maven Projects in right tab
  2. Right click on the module that contained my antlr code
  3. Click Generate Source and Update Folders

I had a similar problem. Intellij found my generated code in the java folder but not in a subfolder of java. I solved it by putting my grammar files (*.g4) into a package (com.test):

.
├── src/
|   └── main/
|       ├── antlr/
|       |   └── com.test/
|       |       └── Test.g4
|       └── java/
|           └── test/
|               └── Test.java
└── target/
    └── generated-sources/
        └── antlr/
            └── com.test/
                ├── TestBaseListener.java
                └── ...

The easiest way to solve this issue is to Right-Click the gen directory and choose Mark Directory as -> Sources Root

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!