欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

windows系統(tǒng)使用mvn命令打包并指定jdk路徑方式

 更新時(shí)間:2023年04月08日 13:53:28   作者:珂珂胖  
這篇文章主要介紹了windows系統(tǒng)使用mvn命令打包并指定jdk路徑方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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

使用背景:我本機(jī)安裝配置的是jdk17,從網(wǎng)上拉取下來的項(xiàng)目使用的是jdk1.8,直接運(yùn)行或者打包的話會(huì)報(bào)錯(cuò)。

IDEA

idea中可以切換jdk,setting -> project structure -> project中 配置好新下載安裝好的jdk1.8的安裝路徑即可。

不打開IDEA,直接使用命令進(jìn)行打包

新建一個(gè)txt文件,編寫以下內(nèi)容

set JAVA_HOME=xxx 僅僅是設(shè)置臨時(shí)環(huán)境變量,不修改實(shí)際的。

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

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

最后將該執(zhí)行文件拷貝到要打包的maven項(xiàng)目根目錄下,雙擊運(yùn)行bat文件即可實(shí)現(xiàn)在jdk1.8環(huán)境下的正常打包。

我們Ctrl+R打開命令窗口,輸入java -version,當(dāng)前java版本還是17.

MVN打包報(bào)錯(cuò):在類路徑或引導(dǎo)類路徑中找不到程序包 java.lang

現(xiàn)象

同一個(gè)Springboot項(xiàng)目在windows下mvn打包正常,在linux下打包就失敗了。

打包命令如下 :

mvn clean package -Dmaven.test.skip=true

然后Linux中的其他項(xiàng)目打包也正常,就是這個(gè)項(xiàng)目不正常。

報(bào)錯(cuò)日志

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,.]
致命錯(cuò)誤: 在類路徑或引導(dǎo)類路徑中找不到程序包 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

原因分析

關(guān)鍵信息致命錯(cuò)誤: 在類路徑或引導(dǎo)類路徑中找不到程序包 java.lang人這里就可以看出應(yīng)該是編譯的時(shí)候環(huán)境變量有問題。

我就開始懷疑是不是JDK配置的問題。

檢查了一下JDK1.8配置正常,我還專門把多余的JDK11刪除以防混淆。

結(jié)果還是沒有作用。

因?yàn)槠渌?xiàng)目編譯打包是正常的,只是這個(gè)項(xiàng)目不正常。我在考慮會(huì)不會(huì)MVN的某個(gè)配置文件不兼容LINUX導(dǎo)致的?

于是我就對(duì)比了一下pom.xml文件的區(qū)別發(fā)現(xiàn)如下一段

<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>

在編譯正常的項(xiàng)目中沒有這段配置<bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>

最終證明真的是這么配置導(dǎo)致的問題的發(fā)生。

解決辦法

配置問題:pom.xml中以下標(biāo)簽中的標(biāo)簽中間配置的jdk的分隔符是不是改錯(cuò)了,

  • window下是英文符號(hào);
  • linux下是英文符號(hào):

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下打包也就正常啦。

這樣處理有一個(gè)非常明顯的缺點(diǎn),在不同的環(huán)境下打包,打包前要編輯一下這個(gè)文件太麻煩了。這樣版本管理也難。那么有沒有一勞永逸的辦法,使一套配置同時(shí)支持兩個(gè)平臺(tái)呢?

最優(yōu)解

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

我把;替換成變量${path.separator}了。

${path.separator}在windows下就是英文符號(hào);

${path.separator}在linux下就是英文符號(hào):

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring設(shè)置攔截器代碼實(shí)例

    spring設(shè)置攔截器代碼實(shí)例

    這篇文章主要介紹了spring設(shè)置攔截器代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 詳解Java的編譯執(zhí)行與解釋執(zhí)行

    詳解Java的編譯執(zhí)行與解釋執(zhí)行

    這篇文章主要介紹了Java的編譯執(zhí)行與解釋執(zhí)行,對(duì)編譯和解釋感興趣的同學(xué),可以參考下
    2021-04-04
  • JDK集合源碼之解析TreeMap(一)

    JDK集合源碼之解析TreeMap(一)

    下面小編就為大家?guī)硪黄獪\談java中的TreeMap 排序與TreeSet 排序。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-07-07
  • 手把手教你如何獲取微信用戶openid

    手把手教你如何獲取微信用戶openid

    眾所周知小程序的openid相當(dāng)重要,它是用戶的唯一標(biāo)識(shí)id,牽扯的支付,登錄,授權(quán)等,下面這篇文章主要給大家介紹了關(guān)于如何獲取微信用戶openid的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Java自定義過濾器和攔截器實(shí)現(xiàn)ThreadLocal線程封閉

    Java自定義過濾器和攔截器實(shí)現(xiàn)ThreadLocal線程封閉

    本文主要介紹了Java自定義過濾器和攔截器實(shí)現(xiàn)ThreadLocal線程封閉,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 通過jenkins發(fā)布java項(xiàng)目到目標(biāo)主機(jī)上的詳細(xì)步驟

    通過jenkins發(fā)布java項(xiàng)目到目標(biāo)主機(jī)上的詳細(xì)步驟

    這篇文章主要介紹了通過jenkins發(fā)布java項(xiàng)目到目標(biāo)主機(jī)上的詳細(xì)步驟,發(fā)布java項(xiàng)目的步驟很簡(jiǎn)單,通過拉取代碼并打包,備份目標(biāo)服務(wù)器上已有的要發(fā)布項(xiàng)目,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-10-10
  • Java SpringBoot自動(dòng)裝配原理詳解

    Java SpringBoot自動(dòng)裝配原理詳解

    這篇文章主要介紹了詳解Spring Boot自動(dòng)裝配的原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • Java適配器模式的實(shí)現(xiàn)及應(yīng)用場(chǎng)景

    Java適配器模式的實(shí)現(xiàn)及應(yīng)用場(chǎng)景

    適配器模式是Java中一種常用的設(shè)計(jì)模式,它通過將一個(gè)類的接口轉(zhuǎn)換成客戶端所期望的另一種接口來實(shí)現(xiàn)不同接口之間的兼容性。適配器模式主要應(yīng)用于系統(tǒng)的接口不兼容、需要擴(kuò)展接口功能以及需要適應(yīng)不同環(huán)境的場(chǎng)景
    2023-04-04
  • MyBatis 實(shí)現(xiàn)數(shù)據(jù)的批量新增和刪除的操作

    MyBatis 實(shí)現(xiàn)數(shù)據(jù)的批量新增和刪除的操作

    這篇文章主要介紹了MyBatis 實(shí)現(xiàn)數(shù)據(jù)的批量新增和刪除的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java實(shí)現(xiàn)MapReduce對(duì)文件進(jìn)行切分的示例代碼

    java實(shí)現(xiàn)MapReduce對(duì)文件進(jìn)行切分的示例代碼

    本文主要介紹了java實(shí)現(xiàn)MapReduce對(duì)文件進(jìn)行切分的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論