【问题标题】:Can't compile java class in Intellij Idea due to "cannot find symbol class X" error由于“找不到符号类 X”错误,无法在 Intellij Idea 中编译 java 类
【发布时间】:2021-06-16 00:43:05
【问题描述】:

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

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

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

看起来像 IDE 错误。

有人建议执行“文件->使缓存无效”来解决类似问题,也有人问过 SO。我试过了,但没有帮助。

这可能是什么原因以及如何解决?

--

Intellij Idea Ultimate 11.1.5。

IDE Java:1.7.0_45

项目 SDK:1.6.0_45

【问题讨论】:

    标签: java intellij-idea


    【解决方案1】:

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

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

    这并不直观,但却是真实的。编译单个类时,IDEA 不会自动编译依赖类。

    【讨论】:

    • 我先编译B类,然后A类编译成功。在此之前,我确信所有依赖项都是自动编译的,因为它是在使用“javac”命令行工具编译代码时完成的。早些时候,我的 B 类与 A 位于不同的包中,并且 Idea 显示另一个错误:“包 'foo' 不存在”。显然类似的原因 - 没有包文件夹。谢谢!
    • 感谢您的回答,它节省了我很多时间
    • 上述解决方案对于具有 1000 个类的企业项目来说并不实用。重建对我有用。
    【解决方案2】:

    "项目右键->编译"

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

    【讨论】:

    • 我必须“右键单击项目 -> 重建”来解决我电脑上的问题。也许他们在 IntelliJ 的某些迭代中将选项“编译”的名称更改为“重建”。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      您可以通过将两个类作为参数提供给编译器来解决这个问题(我不熟悉您用来编译的工具,所以这可能是不可能的),或者通过在包之外编译一个类导入包'com'。这两个都将创建类路径文件以及类文件。

      【讨论】:

        【解决方案5】:

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

        这适用于 Intellij Mac。

        【讨论】:

          【解决方案6】:

          对我来说,使缓存无效并重新加载项目有效。请参阅以下步骤。

          在 Mac 上

          file > Invalidate caches.. > Invalidate and restart
          

          然后转到有问题的 pom.xml 文件,

          CMD + SHIFT + A > RELOAD PROJECT
          

          【讨论】:

            【解决方案7】:

            如果问题不能通过无效的重启来解决,或者重建项目。但是 Maven 干净安装构建良好。

            有时,原因是tomcat的任务。如果您的 maven 构建良好,则没有理由出现错误 cant find symbol。所以你可以编辑tomcat conf,检查启动前是否有任务设置,只需删除这些任务。 Tomcat 只会采用 maven 构建。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-07-29
              • 2014-08-26
              • 2015-03-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多