说明一下环境 我用的是Jenkinsfile自动打包部署,Nexus作为Maven的私服,那天去跑任务的时候就报错了,复制了一些jenkins的Console Output如下:
[WARNING] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/utils/MD5Util.java:[74,38] sun.misc.BASE64Encoder is internal proprietary API and may be removed in a future release
[WARNING] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/utils/http/SSLClient.java: Some input files use or override a deprecated API.
[WARNING] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/utils/http/SSLClient.java: Recompile with -Xlint:deprecation for details.
[WARNING] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/vIo/impl/HouseFoundServiceImpl.java: Some input files use unchecked or unsafe operations.
[WARNING] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/vIo/impl/HouseFoundServiceImpl.java: Recompile with -Xlint:unchecked for details.
[INFO] 7 warnings
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[57,29] cannot find symbol
symbol: class PersonCreditReportMapper
location: package com.Apollo.dao.mapper
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[168,13] cannot find symbol
symbol: class PersonCreditReportMapper
location: class com.Apollo.evo.biz.service.xed.impl.DrawServiceImpl
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[1315,12] cannot find symbol
symbol: class PersonCreditReport
location: class com.Apollo.evo.biz.service.xed.impl.DrawServiceImpl
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[1323,9] cannot find symbol
symbol: class PersonCreditReport
location: class com.Apollo.evo.biz.service.xed.impl.DrawServiceImpl
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[1323,53] cannot find symbol
symbol: class PersonCreditReport
location: class com.Apollo.evo.biz.service.xed.impl.DrawServiceImpl
[INFO] 5 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Apollo 1.0.0 ............................... SUCCESS [ 0.127 s]
[INFO] Apollo-dao 1.0.0-SNAPSHOT .................. SUCCESS [ 1.371 s]
[INFO] Apollo-api 1.0.0-SNAPSHOT .................. SUCCESS [ 0.024 s]
[INFO] Apollo-biz 1.0.0-SNAPSHOT .................. FAILURE [ 3.739 s]
[INFO] Apollo-web 1.0.0 ........................... SKIPPED
[INFO] Apollo-test 1.0.0 .......................... SKIPPED
[INFO] Apollo-provider 1.0.0 ...................... SKIPPED
[INFO] Apollo-consumer 1.0.0 ...................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.427 s
[INFO] Finished at: 2024-05-14T09:51:40+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project Apollo-biz: Compilation failure: Compilation failure:
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[57,29] cannot find symbol
[ERROR] symbol: class PersonCreditReportMapper
[ERROR] location: package com.Apollo.dao.mapper
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[168,13] cannot find symbol
[ERROR] symbol: class PersonCreditReportMapper
[ERROR] location: class com.Apollo.evo.biz.service.xed.impl.DrawServiceImpl
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[1315,12] cannot find symbol
[ERROR] symbol: class PersonCreditReport
[ERROR] location: class com.Apollo.evo.biz.service.xed.impl.DrawServiceImpl
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[1323,9] cannot find symbol
[ERROR] symbol: class PersonCreditReport
[ERROR] location: class com.Apollo.evo.biz.service.xed.impl.DrawServiceImpl
[ERROR] /home/jenkins/workspace/v1-Apollo/Apollo-biz/src/main/java/com/Apollo/evo/biz/service/xed/impl/DrawServiceImpl.java:[1323,53] cannot find symbol
[ERROR] symbol: class PersonCreditReport
[ERROR] location: class com.Apollo.evo.biz.service.xed.impl.DrawServiceImpl
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <args> -rf :Apollo-biz
根据上面的错误代码提示cannot find symbol ;symbol: class PersonCreditReportMapper; location: package com.zlkcxd.dao.mapper (根据错误信息 cannot find symbol ; symbol: class PersonCreditReportMapper; location: package com.zlkcxd.dao.mapper
,这通常表明编译器在尝试编译您的项目时,无法找到名为 PersonCreditReportMapper
的类,并且该类预期位于 com.zlkcxd.dao.mapper
包中。
以下是解决此问题的过程:
-
检查依赖配置:
- 确保
pom.xml
文件中包含了正确版本的依赖项,该依赖项应该包含PersonCreditReportMapper
类。 - 验证
<dependency>
标签中是否包含了正确的groupId
、artifactId
和version
。 - 确保依赖的scope(如
compile
,provided
,runtime
等)是适合您项目的。
- 确保
-
检查Nexus仓库:
- 登录到Nexus仓库,并验证
PersonCreditReportMapper
类所在的jar包是否确实存在于snapshots库中。 - 确认jar包是否已经成功发布,并且版本号是您项目依赖中指定的那个。(一直没拉取成功)
- 登录到Nexus仓库,并验证
-
清理Maven本地仓库缓存:
- 有时候,Maven的本地仓库(通常是
;/.m2/repository
)中的依赖可能损坏或不一致。 - 尝试删除本地仓库中相关的依赖文件夹,然后重新构建项目。(因为pom.xml配置每次构建不去拉取,导致清理maven也是无效的)
- 有时候,Maven的本地仓库(通常是
开发说他用的不是缓存 每次打包都是新拉取的,(秉承着排错过程中谁都不能信的原则)让开发去清理一下缓存再拉取试试,再次拉取也报了同样的错误,问题渐渐清晰了由此得出他一直用的就是缓存,再查看了项目的pom.xml文件发现 如下:
<repositories>
<repository>
<id>nexus</id>
<url>maven仓库地址</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled> --改为ture 无法拉取是因为maven默认snapshot快照库是不拉取的,打开snapshot快照库,允许快照库生效
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
将<enabled>False</enabled>改为<enabled>true</enabled>;再次测试可以正常打包发布了,问题得以解决。