Maven编译时,出现找不到符号

本文讲述了在多module项目中,因子pom与主pom版本不一致导致的编译错误。详细解释了如何通过保持版本一致性来避免找不到包或符号的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在编译项目时出现了找不到符号的错误,在网上找了很久发现解答都大同小异。
最后发现是由于多module工程,每个module维护一个pom,最好保持所有子pom的parent version保持与主pom version一致。否则可能会出现找不到包和找不到符号的情况。
分析发现应该是git协同中,pull了别人的提交,在merge时,子pom的parent version更新,而主pom的version不小心没有更新。那么在编译的时候会以别人提交的项目代码作为依赖,从而会造成你本地的代码找不到你本地其他子项目代码的情况,造成报错。
也就是说被依赖方的版本要低于依赖方的版本。
比如说springcloud中,client模块使用了common模块中的UserDTO类,common模块的pom版本为

<parent>
        <groupId>XXXXXX</groupId>
        <artifactId>XXXXXX</artifactId>
        <version>1.4.80</version>
</parent>

client模块的pom版本为

<parent>
        <groupId>XXXXXX</groupId>
        <artifactId>XXXXXX</artifactId>
        <version>1.4.75</version>
</parent>
<dependencies>
        <dependency>
            <groupId>XXXXXX</groupId>
            <artifactId>common</artifactId>
        </dependency>
</dependencies>

若1.4.80之前的common模块中不存在UserDTO类,且client模块中的common依赖未指定版本,那么client会去加载1.4.75版本的common包,导致编译的时候UserDTO类不存在。
解决办法就是保持子项目version和主项目version一致或者指定好相互依赖的版本关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值