Can';t编译Intellij Idea中的java类,因为;找不到符号类X“;错误

Can';t编译Intellij Idea中的java类,因为;找不到符号类X“;错误,java,intellij-idea,Java,Intellij Idea,我在项目中从头开始创建了新的Java模块。在模块创建向导中选择了“创建'src'文件夹”。源文件夹中只有一个“com”包,其中包含两个公共类(例如A和B)。类实例化B类。IDE不显示错误,当光标位于类源中的类名上时,按下“ctrl+B”键将打开B类源。但当我试图编译一个类(通过上下文菜单->“compilea.java类”)时,会显示以下错误 错误:(15,20)找不到符号类B “src”文件夹被标记为源根目录 看起来像是IDE错误 有人建议做“文件->使缓存失效”来解决类似的问题,也有人这样问

我在项目中从头开始创建了新的Java模块。在模块创建向导中选择了“创建'src'文件夹”。源文件夹中只有一个“com”包,其中包含两个公共类(例如A和B)。类实例化B类。IDE不显示错误,当光标位于类源中的类名上时,按下“ctrl+B”键将打开B类源。但当我试图编译一个类(通过上下文菜单->“compilea.java类”)时,会显示以下错误

错误:(15,20)找不到符号类B

“src”文件夹被标记为源根目录

看起来像是IDE错误

有人建议做“文件->使缓存失效”来解决类似的问题,也有人这样问。我试过了,但没用

可能的原因是什么?如何解决

--

Intellij Idea Ultimate 11.1.5

IDEJava:1.7.0_45


Project SDK:1.6.0_45

如果包中的一个类依赖于包中的另一个类,则需要创建一个类路径。否则,编译器不知道另一个类实际上存在。您的IDE可能天生就知道这些类在同一个包中,这就是为什么它没有显示任何错误


您可以通过将这两个类作为参数提供给编译器(我不熟悉用于编译的工具,因此可能无法实现),或者在导入包“com”的包外部编译一个类来解决此问题。这两者都将创建类路径文件以及类文件。

首先尝试编译整个项目(或至少编译类
B

如果只编译
A
,则无法找到类
B
,因为它尚未编译(因此,不存在字节码
B.class
文件)

这不是直觉,而是事实。IDEA在编译单个类时不会自动编译依赖类

“右键单击项目->编译”


这确实为我解决了同样的问题。

选择Build->Rebuild Project,它对我有效

右键单击项目:Maven->重新导入


如果问题无法通过无效的重新启动或重建projet解决,则Intellij Mac上的这项功能有效。

。然而,maven clean安装构建良好


有时,原因是tomcat的任务。如果您的maven构建良好,那么没有理由错误
找不到符号。所以您可以编辑tomcat conf,在设置启动之前检查是否有任务,只需删除这些任务。Tomcat只接受maven版本。

对我来说,使缓存失效并重新加载项目工作正常。请参阅下面的步骤

在Mac上

file > Invalidate caches.. > Invalidate and restart
然后转到有问题的pom.xml文件

CMD + SHIFT + A > RELOAD PROJECT

我先编译了B类,然后成功地编译了一个类。在此之前,我确信所有依赖项都是自动编译的,就像使用“javac”命令行工具编译代码一样。早些时候,我的B类位于与A不同的包中,Idea显示了另一个错误:“包‘foo’不存在”。显然是类似的原因-没有包文件夹。非常感谢。谢谢你的回答,它节省了我这么多的时间以上的解决方案是不实际的将企业项目与1000类。重建对我来说很有效。我必须右键点击项目->重建来解决我电脑上的问题。也许他们在IntelliJ的某个迭代中将选项“compile”的名称改为“rebuild”。