我遇到了模糊的问题。
我是项目的新手。我用Eclipse。我的所有同事都使用IDEA。我有来自svn的结账项目。
我为构建和部署项目执行了相应的maven任务。一切都很好。
但我的Eclipse向我展示了问题。
代码:
sceneService.uploadFile(...);
eclipse显示sceneService
没有uploadFile
方法
我开始研究。我在同事的PC上展示这个课程。但是这个问题还没有解决。我注意到我们使用sceneService
类的不同版本的jar文件。
我们使用相同版本的pom.xml。
我的pom.xml中的jar依赖项(对于我的模块):
<dependency>
<groupId>com.day.cq.dam</groupId>
<artifactId>cq-dam-scene7</artifactId>
<scope>provided</scope>
</dependency>
当我输入alt+shift+w
时,我看到该jar包含来自另一个模块的sceneService
类。
答案 0 :(得分:3)
我认为Maven下载正确的jar有一些问题。您的本地存储库可能包含jar的早期版本。
通过从命令提示符转到项目的根文件夹来尝试这些命令。
如果问题仍然存在,请尝试删除本地.m2存储库并再次重建项目
答案 1 :(得分:2)
我认为我之前关于“提供”范围的评论是一个红色的鲱鱼。实际问题可能是由于版本冲突造成的。
默认情况下,Eclipse启用workspace resolution of artifacts。这意味着它将从工作区中的其他项目中找到要使用的工件(即cq-dam-scene7
)。它也会在.m2
存储库中找到它们;我不确定哪个优先。
解决方案的可能途径包括:
指定工件的版本。这将确保您使用正确的JAR,即使必须在local .m2
repository。
<dependency>
<groupId>com.day.cq.dam</groupId>
<artifactId>cq-dam-scene7</artifactId>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
确保您的本地cq-dam-scene7
项目包含正确的代码 - 即定义了uploadFile()
方法的版本。
答案 2 :(得分:1)
我面临类似的问题,我在工作区有两个Maven项目。主项目使用Helper项目的输出JAR作为工件。
现在问题是Main项目正在尝试引用Helper项目的JUnit库(具有旧版本4.10),而不是它自己的版本为4.12的JUnit库。由于这种不正确的引用,我在主项目中遇到了构建错误。
我找到的唯一解决方法是关闭Helper项目并仅在工作区中打开Main项目。
可能这是一个Eclipse bug。
答案 3 :(得分:0)
删除.m2中的存储库文件夹(在您的用户目录中),让maven在下一个构建周期中重建它。 它将确保没有旧的罐子在本地缓存