出于某种原因,我的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
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月发布)中,它们被标记为不同的资源目录.
听起来好像转换为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工具窗口中(默认情况下在右侧)
如果尚未显示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.如果之后仍然存在问题,请编辑原始问题并添加项目树和文件>项目结构> [模块]> [源选项卡]对话框窗口的屏幕截图.
当你说"它编译得很好"时,你没有说明你是如何编译的?根据您所描述的内容以及我怀疑问题的原因,我假设您正在通过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月发布)中,它们被标记为不同的资源目录.
听起来好像转换为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工具窗口中(默认情况下在右侧)
如果尚未显示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.如果之后仍然存在问题,请编辑原始问题并添加项目树和文件>项目结构> [模块]> [源选项卡]对话框窗口的屏幕截图.