Can't compile java class in Intellij Idea due

2020-05-30 07:09发布

问题:

I created new Java module from scratch in my project. "create 'src' folder" was selected in module creation wizard. There is single "com" package in source folder which contains two public classes (say A and B). A class instantiates B class. IDE does not show errors and B class source is opened on "ctrl+B" pressing when cursor is located on the class name inside A class source. But when I'm trying to compile A class (by context menu -> "compile A.java class") following error is shown

Error:(15, 20) cannot find symbol class B

"src" folder is marked as source root.

It looks like IDE bug.

Someone suggested to do "File->Invalidate Caches" to fix alike issue also asked on SO. I tried that and it did not help.

What possible reason of that and how it can be fixed?

--

Intellij Idea Ultimate 11.1.5.

IDE Java: 1.7.0_45

Project SDK: 1.6.0_45

回答1:

Try compiling the whole project (or at least class B) first.

If you compile only class A, class B cannot be found because it hasn't been compiled yet (therefore, no bytecode B.class file exists).

This is not intuitive, but true. IDEA doesn't automatically compile dependant classes when you compile single class.



回答2:

"right-click on project -> compile"

This did solve the same problem for me.



回答3:

Select Build -> Rebuild Project, it works for me!



回答4:

If a class within a package is dependent on another class in the package, you need to create a classpath. Otherwise, the compiler does not know that the other class actually exists. Your IDE probably knows inherently that the classes are in the same package, which is why it isn't showing any errors.

You can resolve this issue most simply by supplying both classes as arguments to the compiler (I'm not familiar with the tool you're using to compile so this may not be possible), or by compiling a class outside the package that imports package 'com'. Both of these will create the classpath file along with the class files.



回答5:

Right click project: Maven -> Reimport

This worked on Intellij Mac.