我在项目中从头开始创建了新的Java模块。 "创建' src'夹"在模块创建向导中选择。有单一的" com"源文件夹中的包,包含两个公共类(比如A和B)。一个类实例化B类。 IDE不显示错误,并且在" ctrl + B"上打开B类源。当光标位于A类源中的类名时按下。但是当我尝试编译A类时(通过上下文菜单 - >"编译A.java类")会显示以下错误
错误:(15,20)找不到符号类B
" SRC"文件夹被标记为源根。
看起来像IDE错误。
有人建议做" File-> Invalidate Caches"解决问题也问SO。我试过了,但没有用。
可能的原因是什么以及如何解决?
-
Intellij Idea Ultimate 11.1.5。
IDE Java:1.7.0_45
Project SDK:1.6.0_45
答案 0 :(得分:25)
首先尝试编译整个项目(或至少是类B
)。
如果编译仅类A
,则无法找到类B
,因为它尚未编译(因此,不存在字节码B.class
文件)。
这不直观,但确实如此。编译单个类时,IDEA不会自动编译依赖类。
答案 1 :(得分:19)
“右键点击项目 - >编译”
这确实为我解决了同样的问题。
答案 2 :(得分:10)
选择构建 - >重建项目,它对我有用!
答案 3 :(得分:2)
如果包中的类依赖于包中的另一个类,则需要创建类路径。否则,编译器不知道其他类实际存在。您的IDE可能固有地知道这些类在同一个包中,这就是它没有显示任何错误的原因。
您可以通过将两个类作为参数提供给编译器来解决此问题(我不熟悉您用于编译的工具,因此可能无法实现),或者通过编译包外的类导入包'com'。这两个都将创建类路径文件以及类文件。
答案 4 :(得分:0)
右击项目:Maven - >再次导入
这适用于Intellij Mac。
答案 5 :(得分:0)
如果无效的笔迹无法解决问题,或重建projet。但是,maven全新安装的构建效果很好。
有时,原因是tomcat的任务。如果您的专家构建良好,则没有理由认为错误cant find symbol
。因此,您可以编辑tomcat conf,在设置启动前检查是否有任务,只需删除这些任务即可。 Tomcat只采用Maven构建。
答案 6 :(得分:0)
对我来说,使缓存无效并重新加载项目有效。请参阅以下步骤。
在 Mac 上
file > Invalidate caches.. > Invalidate and restart
然后转到有问题的 pom.xml 文件,
CMD + SHIFT + A > RELOAD PROJECT