Intellij将其他类的成员强调为错误,但它编译得很好

 mobiledu2402851373 发布于 2023-02-13 18:19

出于某种原因,我的Intellij IDEA IDE开始强调使用本地类之外的任何内容作为错误.它只针对我编写的包中的项目 - 例如,像java.*这样的包不会显示为错误.即使是joda-time依赖也没有错误亮点,它只是来自我自己的包.这个问题才在我为项目编写pom.xml后才开始出现,所以我假设它与maven有关.

例如,main以下行的红色为红色,并显示错误cannot resolve symbol 'main': import main.java.com.jamobox.jamchatserver.clients.ClientReader;

然后在一个类被作为参数给出的实例中,例如 public void doSomething(Client c) { .. } ,我把类似的东西用 doSomething(new Client()); 突出显示红色参数中的值 doSomething(Client) cannot be applied to doSomething(main.java.com.jamobox.jamchatserver.clients.Client)

正如我所说,代码编译并运行绝对正常,它只是认为出错的IDE.我已经尝试了这个类似问题中给出的所有答案,但似乎没有任何效果.

任何人都有任何想法如何解决这个问题?

万一它可以帮助任何人解决这个问题,这是我目前的pom.xml:


4.0.0

com.jamobox.jamchatserver
JamChatServer
JamChat Server
0.2.1



    
        joda-time
        joda-time
        2.3
        jar
        false
    




  
      
          
              maven-compiler-plugin
              2.3.2
              
                  1.7
                  1.7
              
          
      
  



Javaru.. 5

当你说"它编译得很好"时,你没有说明你是如何编译的?根据您所描述的内容以及我怀疑问题的原因,我假设您正在通过maven进行编译.

看起来好像在声明的源目录和包名称中存在一些不匹配.当您通过IDEA创建(裸骨)Java项目时,它将生成源目录{project.basedir}/src.请注意,在项目视图中,src目录为蓝色,表示它是主要(即生产)源目录:

在此输入图像描述

这也显示在项目结构对话框中:

在此输入图像描述

对于maven项目,默认的主(生产)源目录java位于路径中{project.basedir}/src/main/java.然后有一个相应的测试源目录{project.basedir}/src/test/java.IDEA将测试源目录标记为绿色文件夹.最后,主要和测试resources目录都用于配置文件,图像等.在IDEA 12.x resources目录中标记为源和测试源目录,其颜色与相应的java目录相同.在IDEA 13(目前处于测试版并将于12月发布)中,它们被标记为不同的资源目录.

IDEA项目树

听起来好像转换为maven时,main\java目录已添加到src目录并且com根包目录已移至java,但是当发生这种情况时,包声明从哪里更改 com.jamobox...main.java.com.janbobox....这可能是因为当您进行移动时,src仍然将其配置为源目录.因此,IDEA看到包名更改com.jamobox...main.java.com.janbobox...和更改import语句(以及可能的包语句)以匹配.

要修复,您需要执行以下操作:

    使用"Reimport All Maven Projects"按钮强制导入maven pom 重新导入所有Maven项目按钮 在Maven工具窗口中(默认情况下在右侧)

    如果尚未显示POM,请单击"添加"按钮 添加按钮,导航到pom.xml文件并添加它.然后运行重新导入.

    验证java目录(和src目录)被标记为项目源如图所示在上面的截图(示出两个IDEA的12.x和13.x项目树)

    如果未标记正确的目录,请尝试重新导入2次或3次.如果这不能解决(它应该),请进入文件>项目结构> [模块]> [源选项卡]并手动配置正确的源.删除任何无关的.

    验证com根软件包目录是否src\main\java存在src

    搜索并替换任何package main.java.com字符串package com

    搜索并替换任何import main.java.com字符串import com

这应该解决问题.如果仍有红色,请运行" 文件">"无效缓存"并重新启动IDEA.如果之后仍然存在问题,请编辑原始问题并添加项目树和文件>项目结构> [模块]> [源选项卡]对话框窗口的屏幕截图.

1 个回答
  • 当你说"它编译得很好"时,你没有说明你是如何编译的?根据您所描述的内容以及我怀疑问题的原因,我假设您正在通过maven进行编译.

    看起来好像在声明的源目录和包名称中存在一些不匹配.当您通过IDEA创建(裸骨)Java项目时,它将生成源目录{project.basedir}/src.请注意,在项目视图中,src目录为蓝色,表示它是主要(即生产)源目录:

    在此输入图像描述

    这也显示在项目结构对话框中:

    在此输入图像描述

    对于maven项目,默认的主(生产)源目录java位于路径中{project.basedir}/src/main/java.然后有一个相应的测试源目录{project.basedir}/src/test/java.IDEA将测试源目录标记为绿色文件夹.最后,主要和测试resources目录都用于配置文件,图像等.在IDEA 12.x resources目录中标记为源和测试源目录,其颜色与相应的java目录相同.在IDEA 13(目前处于测试版并将于12月发布)中,它们被标记为不同的资源目录.

    IDEA项目树

    听起来好像转换为maven时,main\java目录已添加到src目录并且com根包目录已移至java,但是当发生这种情况时,包声明从哪里更改 com.jamobox...main.java.com.janbobox....这可能是因为当您进行移动时,src仍然将其配置为源目录.因此,IDEA看到包名更改com.jamobox...main.java.com.janbobox...和更改import语句(以及可能的包语句)以匹配.

    要修复,您需要执行以下操作:

      使用"Reimport All Maven Projects"按钮强制导入maven pom 重新导入所有Maven项目按钮 在Maven工具窗口中(默认情况下在右侧)

      如果尚未显示POM,请单击"添加"按钮 添加按钮,导航到pom.xml文件并添加它.然后运行重新导入.

      验证java目录(和src目录)被标记为项目源如图所示在上面的截图(示出两个IDEA的12.x和13.x项目树)

      如果未标记正确的目录,请尝试重新导入2次或3次.如果这不能解决(它应该),请进入文件>项目结构> [模块]> [源选项卡]并手动配置正确的源.删除任何无关的.

      验证com根软件包目录是否src\main\java存在src

      搜索并替换任何package main.java.com字符串package com

      搜索并替换任何import main.java.com字符串import com

    这应该解决问题.如果仍有红色,请运行" 文件">"无效缓存"并重新启动IDEA.如果之后仍然存在问题,请编辑原始问题并添加项目树和文件>项目结构> [模块]> [源选项卡]对话框窗口的屏幕截图.

    2023-02-13 18:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有