返回顶部
首页 > 资讯 > 精选 >windows系统怎么使用mvn命令打包并指定jdk路径
  • 707
分享到

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

2023-07-05 23:07:30 707人浏览 安东尼
摘要

这篇文章主要讲解了“windows系统怎么使用mvn命令打包并指定jdk路径”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows系统怎么使用mvn命令打包并指定jdk路径”吧!使用m

这篇文章主要讲解了“windows系统怎么使用mvn命令打包并指定jdk路径”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows系统怎么使用mvn命令打包并指定jdk路径”吧!

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

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

    idea

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

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

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

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

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

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

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

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

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

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

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

    感谢各位的阅读,以上就是“windows系统怎么使用mvn命令打包并指定jdk路径”的内容了,经过本文的学习后,相信大家对windows系统怎么使用mvn命令打包并指定jdk路径这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: windows系统怎么使用mvn命令打包并指定jdk路径

    本文链接: https://lsjlt.com/news/356227.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作