这可能是Eclipse及其构建路径处理的特性之一,尽管到目前为止已经测试了各种变通方法,但这些特性无法修复。
该问题涉及多个项目的工作区,每个项目都编译成自己的JAR。
通过将相关的相关内容添加到构建路径(不使用Maven
或其他外部工具或插件)来解决项目之间的依赖关系,通过
Project -> Properties -> Java Build Path -> Projects
在所有这些项目中,一对(例如,com.example.p1
和com.example.p2
)拒绝识别第三个(和简单的)(例如,com.example.p3
),而所有其他项目都做。因此,虽然P3被添加到构建路径中,但是P3中的所有相关类都被正确导入,并且每个这样的类的源代码都可以通过点击F3
来访问,Eclipse一直在抱怨
The import com.example.p3 cannot be resolved
和
SomeClass cannot be resolved to a type
其中com.example.p3.SomeClass
是P3类之一。
如果不是P3项目而是将其编译的JAR放在构建路径中,问题就会消失。但是,P3中的代码经常更改,并且继续编译和刷新工作空间是浪费时间,以便获取更改,更不用说这不应该在IDE中发生(并且它不适用于其他项目使用P3,在同一个Eclipse工作区中。)
我试过了:
删除并再次添加P1,P2,P3
清理和重新编译所有内容
检查是否有任何其他项目加载P3 JAR
将P3置于Eclipse构建路径“订单和导出”列表的顶部
使用Eclipse的“修复项目设置”建议(将鼠标悬停在红色下划线错误编译行上时可用)。实际上,此选项可以向构建路径添加P3或其JAR,但如果添加了P3,则会再次出现问题。
使用P3源(不是JAR)时P1和P2中的.classpath
文件与所有其他项目相同,看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="classes" path="src"/>
<classpathentry kind="var" path="JRE_LIB" sourcepath="JRE_SRC"/>
<classpathentry kind="lib" path="<JAR_path/JAR_file>"/>
... // Multiple other JAR files
<classpathentry combineaccessrules="false" kind="src" path="/p3/">
<classpathentry kind="output" path="bin"/>
</classpath>
.project
文件对于工作区中的所有项目也是相同的。
有什么想法吗?