windows系统使用mvn命令打包并指定jdk路径方式

 更新时间:2023年04月08日 13:53:28   作者:珂珂胖  
这篇文章主要介绍了windows系统使用mvn命令打包并指定jdk路径方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用mvn命令打包并指定jdk路径

使用背景:我本机安装配置的是jdk17,从网上拉取下来的项目使用的是jdk1.8,直接运行或者打包的话会报错。

IDEA

idea中可以切换jdk,setting -> project structure -> project中 配置好新下载安装好的jdk1.8的安装路径即可。

不打开IDEA,直接使用命令进行打包

新建一个txt文件,编写以下内容

set JAVA_HOME=xxx 仅仅是设置临时环境变量,不修改实际的。

set JAVA_HOME=C:\Users\kekePang\.jdks\corretto-1.8.0_322
mvn clean package

保存文件,重命名为 package.bat

最后将该执行文件拷贝到要打包的maven项目根目录下,双击运行bat文件即可实现在jdk1.8环境下的正常打包。

我们Ctrl+R打开命令窗口,输入java -version,当前java版本还是17.

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

现象

同一个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下就是英文符号:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java如何发起http请求的实现(GET/POST)

    Java如何发起http请求的实现(GET/POST)

    这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • springboot中restful风格请求的使用方法示例

    springboot中restful风格请求的使用方法示例

    RESTful是一种web软件风格,它不是标准也不是协议,它不一定要采用,只是一种风格,它倡导的是一个资源定位(url)及资源操作的风格,下面这篇文章主要给大家介绍了关于springboot中restful风格请求的使用方法,需要的朋友可以参考下
    2023-02-02
  • 使用cmd根据WSDL网址生成java客户端代码的实现

    使用cmd根据WSDL网址生成java客户端代码的实现

    这篇文章主要介绍了使用cmd根据WSDL网址生成java客户端代码的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Java操作Elasticsearch rest-high-level-client 的基本使用

    Java操作Elasticsearch rest-high-level-client 的基本使用

    这篇文章主要介绍了Java操作Elasticsearch rest-high-level-client 的基本使用,本篇主要讲解一下 rest-high-level-client 去操作 Elasticsearch的方法,结合实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • 14个编写Spring MVC控制器的实用小技巧(吐血整理)

    14个编写Spring MVC控制器的实用小技巧(吐血整理)

    这篇文章主要介绍了14个编写Spring MVC控制器的实用小技巧(吐血整理),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • java如何将实体类转换成json并在控制台输出

    java如何将实体类转换成json并在控制台输出

    这篇文章主要介绍了java如何将实体类转换成json并在控制台输出问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • SpringMVC文件上传及查看的示例代码

    SpringMVC文件上传及查看的示例代码

    本篇文章主要介绍了SpringMVC文件上传及查看的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Java图形界面超实用使用教程

    Java图形界面超实用使用教程

    在Java编程中图形界面应用程序是非常常见和重要的一部分,下面这篇文章主要给大家介绍了关于Java图形界面的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Java实现和电脑玩剪刀石头布游戏

    Java实现和电脑玩剪刀石头布游戏

    这篇文章主要为大家详细介绍了Java实现和电脑玩剪刀石头布游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 浅谈Spring Cloud Netflix-Ribbon灰度方案之Zuul网关灰度

    浅谈Spring Cloud Netflix-Ribbon灰度方案之Zuul网关灰度

    这篇文章主要介绍了浅谈Spring Cloud Netflix-Ribbon灰度方案之Zuul网关灰度,想了解Ribbon灰度的同学可以参考下
    2021-04-04

最新评论