中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2023-04-08 14:36:51 來源:億速云 閱讀:204 作者:iii 欄目:開發技術

這篇文章主要講解了“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_322
    mvn 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路徑這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    临洮县| 宁河县| 武义县| 镇雄县| 景谷| 中方县| 郴州市| 合肥市| 名山县| 溧水县| 海丰县| 行唐县| 泗水县| 堆龙德庆县| 昭苏县| 乌鲁木齐市| 弋阳县| 湖口县| 蒲城县| 瑞丽市| 水城县| 萨嘎县| 平塘县| 湖南省| 宁阳县| 深州市| 河曲县| 文水县| 工布江达县| 祁阳县| 明光市| 安泽县| 营山县| 准格尔旗| 额济纳旗| 平塘县| 阿拉善右旗| 新竹县| 邻水| 台南市| 新沂市|