现象

同一个Springboot项目在windows下mvn打包正常,在linux下打包就失败了。

打包命令如下 :

mvn clean package -Dmaven.test.skip=true

然后Linux中的其他项目打包也正常,就是这个项目不正常。

报错日志

key/.m2/repository/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar,/home/itkey/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar,.]
致命错误: 在类路径或引导类路径中找不到程序包 java.lang
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] An unknown compilation problem occurred
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for wsdm 1.0.0:
[INFO]
[INFO] wsdm ............................................... SUCCESS [  0.201 s]
[INFO] wsdm-common ........................................ FAILURE [  2.113 s]
[INFO] wsdm-liantong ...................................... SKIPPED
[INFO] wsdm-system ........................................ SKIPPED
[INFO] wsdm-framework ..................................... SKIPPED
[INFO] wsdm-generator ..................................... SKIPPED
[INFO] wsdm-rongcloud ..................................... SKIPPED
[INFO] wsdm-admin ......................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.647 s
[INFO] Finished at: 2022-04-21T14:58:23+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project wsdm-common: Compilation failure
[ERROR] An unknown compilation problem occurred
[ERROR]
[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 :wsdm-common

原因分析

关键信息致命错误: 在类路径或引导类路径中找不到程序包 java.lang人这里就可以看出应该是编译的时候环境变量有问题。
我就开始怀疑是不是JDK配置的问题。

检查了一下JDK1.8配置正常,我还专门把多余的JDK11删除以防混淆。
结果还是没有作用。

因为其他项目编译打包是正常的,只是这个项目不正常。我在考虑会不会MVN的某个配置文件不兼容LINUX导致的?

于是我就对比了一下pom.xml文件的区别发现如下一段

<configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding><compilerArguments><verbose/><bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath></compilerArguments></configuration>

在编译正常的项目中没有这段配置<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>

最终证明真的是这么配置导致的问题的发生。

解决办法

配置问题:pom.xml中以下标签中的标签中间配置的jdk的分隔符是不是改错了,

  • window下是英文符号;
  • linux下是英文符号:

windows

<compilerArguments>
<verbose />
<bootclasspath>${java.home}\jre\lib\rt.jar;${java.home}\jre\lib\jce.jar</bootclasspath>
</compilerArguments>

linux

<compilerArguments>
<verbose />
<bootclasspath>${java.home}\jre\lib\rt.jar:${java.home}\jre\lib\jce.jar</bootclasspath>
</compilerArguments>

修改完成以后,linux下打包也就正常啦。

这样处理有一个非常明显的缺点,在不同的环境下打包,打包前要编辑一下这个文件太麻烦了。这样版本管理也难。那么有没有一劳永逸的办法,使一套配置同时支持两个平台呢?

最优解

<bootclasspath>${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>

我把;替换成变量${path.separator}了。

${path.separator}在windows下就是英文符号;

${path.separator}在linux下就是英文符号:

参考

https://www.cnblogs.com/xuehuashanghe/p/9397982.html
https://blog.csdn.net/lwlfox/article/details/80454549

MVN打包报错:在类路径或引导类路径中找不到程序包 java.lang相关推荐

  1. java获取mavenlib路径,maven install报错致命错误: 在类路径或引导类路径中找不到程序包 java.lang | ZPY博客...

    [类文件的搜索路径: C:\Program Files\Java\jdk1.8.0_181\jre\lib\rt.jar:C:\Program Files\Java\jdk1.8.0_181\jre\ ...

  2. java类里的包路径报错_[ERROR] 致命错误: 在类路径或引导类路径中找不到程序包 java.lang...

    maven执行install时出现错误: [ERROR] [源文件的搜索路径: E:\project\IdeaProjects\weixin\leimingtech-core\src\main\jav ...

  3. (已解决)win环境下 maven 报错:致命错误: 在类路径或引导类路径中找不到程序包 java.lang

    项目场景: 提示:使用mybatis-plus生成代码时需要的问题 问题描述: 提示:这里描述项目中遇到的问题: 出现一下错误 [INFO] [INFO] ---------------------- ...

  4. macos 致命错误: 在类路径或引导类路径中找不到程序包 java.lang

    本文环境:MacOS 程序运行没有问题,但在 maven 打包时,报了如下错误: 致命错误: 在类路径或引导类路径中找不到程序包 java.lang[INFO] ------------------- ...

  5. 致命错误: 在类路径或引导类路径中找不到程序包 java.lang_如何提升店铺动态评分 需要提升可以找我...

    DSR,也就是店铺动态评分,对于一个店铺那是至关重要的,不仅是因为好多活动需要去看DSR评分,而且,他对于你的店铺权重影响也是很大的.当你的DSR各项均值一直低于行业平均值以后,你的自然流量就会受到很 ...

  6. maven打包报错找不到符号,由于找不到类中方法的解决思路

    maven打包报错找不到符号,若pom文件引用正常,报错的类有修改能正常启动执行程序,很有可能因为该类属于公共工具类,在外层目录,通过pom引用的,修改后工具类后,打包时没有将其重新打包,导致该出引用 ...

  7. linux安装python库报错pywin32_完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误...

    报错信息 最近闲来无事,用python的tkinter库开发了一款带日程提醒的万年历桌面程序.在程序开发结束开始打包时,却发现一直报错 PyInstaller cannot check for ass ...

  8. maven打包报错You have to use a classifier to attach supplemental artifacts to the project instead of rep

    maven打包报错You have to use a classifier to attach supplemental artifacts to the project instead of rep ...

  9. npm run build 打包报错primordials is not defined的解决方法

    npm run build 打包报错primordials is not defined的解决方法 D:\uniapp项目\huishua_web_agent>npm run build> ...

最新文章

  1. 福师2021计算机应用基础,2021福师《计算机应用基础》在线作业二【满分答案】...
  2. CentOS 不区分大小写的搜索
  3. Android Bluetooth模块学习笔记
  4. java BIO NIO AIO 理论篇
  5. linux终端常用快捷键
  6. 上班划水神器:一个可以在控制台玩斗地主的项目!
  7. 转 批处理 %~dp0的意义
  8. POJ 1694 An Old Stone Game ★(排序+树+递归)
  9. SAP License:SAP资产相关内容
  10. Linux操作Oracle(2)——Oracle导出exp导出用户报错:EXP-00006: 出现内部不一致的错误 EXP-00000: 导出终止失败
  11. 游戏服务器停机维护,游戏是如何做到服务器不停机维护的?
  12. Struts + Spring + Hibernate 进阶开端(一)
  13. SM2算法第十八篇:SM2毕设论文
  14. 智能卡破解入门二三事(转载)
  15. unity移动平台阴影解决方案
  16. 微信小程序设置字体无效_UI设计微信小程序用了苹方字体,前端却说做不了怎么办?...
  17. line-height1.5和line-height:150%的区别
  18. C#语法小知识(二十一)ref与out
  19. Mirror 常用组件
  20. 工业相机基础知识以及相机内参标定

热门文章

  1. SAP MM 物料扩充MRP范围
  2. 2019年北航计算机夏令营
  3. MFC的进度栏的编程
  4. 利用 conda install --use-local 安装 解决 Tensorflow: illegal instruction (core dumped)
  5. 怎样拿下SUN公司的SCJP认证?
  6. 计算机在校学校目标和措施,学校信息化建设三年发展规划
  7. change在c语言中的用法,change的过去式和用法例句意思及阅读
  8. 算法题-排列组合问题
  9. void*的用法【转】
  10. faster R-CNN中anchors 的生成过程(generate_anchors源码解析)