gpt4 book ai didi

java - Intellij 将其他类的成员突出显示为错误,但编译良好

转载 作者:行者123 更新时间:2023-12-01 17:18:46 30 4
gpt4 key购买 nike

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

例如,以下行的 main 为红色,并显示错误无法解析符号“main”:导入main.java.com.jamobox.jamchatserver.clients.ClientReader;

然后在类作为参数给出的实例中,例如public void doSomething(Client c) { .. }我放了类似的东西doSomething(new Client());它将以红色突出显示参数中的值doSomething(Client) 无法应用于 doSomething(main.java.com.jamobox.jamchatserver.clients.Client)

正如我所说,代码编译并运行得非常好,只是 IDE 认为出了问题。我已经尝试了this中给出的几乎所有答案。类似的问题,但似乎没有任何效果。

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

如果它可以帮助任何人解决这个问题,这是我当前的 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.jamobox.jamchatserver</groupId>
<artifactId>JamChatServer</artifactId>
<name>JamChat Server</name>
<version>0.2.1</version>

<dependencies>

<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
<type>jar</type>
<optional>false</optional>
</dependency>

</dependencies>

<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>

</project>

最佳答案

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

声明的源目录和包名称似乎存在一些不匹配。当您通过 IDEA 创建一个(基本的)java 项目时,它会将源目录设置为 {project.basedir}/src 。请注意,在项目 View 中,src目录是蓝色的,表示它是主(即生产)源目录:

enter image description here

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

enter image description here

对于 Maven 项目,默认的主(即生产)源目录是 java在路径 {project.basedir}/src/main/java 。那么就有对应的测试源码目录{project.basedir}/src/test/java 。 IDEA 将测试源目录标记为绿色文件夹。最后,有主要和测试resources用于配置文件、图像等的目录。在 IDEA 12.x 中resources目录被标记为源目录和测试源目录,其颜色与相应的 java 相同。目录。在 IDEA 13(目前处于测试阶段,将于 12 月发布)中,它们被标记为不同的资源目录。

IDEA Project Tree

听起来好像当你转换为maven时,main\java目录已添加到 src目录和 com根包目录已移至 java ,但是当这种情况发生时,包声明从 com.jamobox... 更改为至main.java.com.janbobox... 。这很可能发生,因为当您采取行动时,src仍配置为源目录。所以 IDEA 看到包名称从 com.jamobox... 更改为至main.java.com.janbobox...并更改导入语句(以及可能的包语句)以匹配。

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

  1. 使用“重新导入所有 Maven 项目”按钮强制导入 Maven pom Reimport All Maven Projects button在 Maven 工具窗口中(默认在右侧)
    • 如果 POM 尚未显示,请单击添加按钮 add button ,导航到 pom.xml 文件并添加它。然后运行重新导入。
  2. 验证 java目录(不是 src 目录)被标记为项目源,如上面的屏幕截图所示(显示 IDEA 12.x 和 13.x 项目树)
    • 如果未标记正确的目录,请尝试重新导入 2 或 3 次以上。如果这不能解决问题(应该),请进入文件 > 项目结构 > [模块] > [源选项卡] 并手动配置正确的源。删除任何无关的。
  3. 验证com根包目录位于 src\main\java而不是src
  4. 搜索并替换任何 package main.java.com字符串 package com
  5. 搜索并替换任何 import main.java.com字符串 import com

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

关于java - Intellij 将其他类的成员突出显示为错误,但编译良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20294421/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com