亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Maven surefire 找不到 ForkedBooter 類

Maven surefire 找不到 ForkedBooter 類

哈士奇WWW 2021-12-10 10:49:21
最近來到一個新項目,我正在嘗試編譯我們的源代碼。昨天一切正常,但今天是另一回事。每次我mvn clean install在一個模塊上運行時,一旦到達測試,它就會崩潰:[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ recorder ---[INFO] Surefire report directory: /lhome/code/recorder/target/surefire-reports[INFO] Using configured provider org.apache.maven.surefire.junitcore.JUnitCoreProvider[INFO] parallel='none', perCoreThreadCount=true, threadCount=0, useUnlimitedThreads=false, threadCountSuites=0,     threadCountClasses=0, threadCountMethods=0, parallelOptimized=true------------------------------------------------------- T E S T S-------------------------------------------------------Error: Could not find or load main class org.apache.maven.surefire.booter.ForkedBooterResults :Tests run: 0, Failures: 0, Errors: 0, Skipped: 0后來:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project recorder: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?我在Debian 9 (Stretch) 64 位和 OpenJDK 1.8.0_181、Maven 3.5.4 上運行,在我在~/.m2/settings.xml.奇怪的是,如果我沒記錯的話,最新的 Surefire 版本是 2.22.1。我試圖指定插件版本,但它沒有更新,否則任何POM(父、祖父或這個)中都沒有插件版本規范。
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

要修復它(2018 年),請將您的 openjdk 更新到最新版本,至少為 8u191-b12。如果這個問題在 2020 年再次出現,很可能是 openjdk 的默認行為發生了變化,然后您需要更新 maven surefire 插件。

這是您剛剛升級到的 openjdk-8 包中的一個現已修復的 錯誤(行為明顯偏離上游而無需;缺少上游補丁以恢復禁用安全檢查)。但它也是surefire插件中的一個錯誤, SUREFIRE-1588,據說在surefire 3.0.0-M1中修復:它顯然在Java將來只允許相對路徑名的地方使用絕對路徑(并且Debian激活了未來的行為已經)。

軟件包版本 8u181-b13-2 說明:

  • 應用 8u191-b12 安全更新中的補丁。

請注意,191-b12 != 181-b13。191-b12 安全補丁幾天前剛剛發布,顯然維護人員希望盡快將它們提供給您。完全更新到 191-b12 可能需要額外的測試(好吧,顯然應該有這個上傳)。

有幾種解決方法:

  1. 您可以從 snapshots.do安裝以前的包 。降級后,您可以apt使用sudo aptitude forbid-version openjdk-8-jre-headless. 對于常規的“apt”,我沒有看到類似的禁止機制,因此您可能需要使用 apt pinning 來防止重新安裝此升級(或者您只是繼續降級,我希望這會很快得到解決)。

  2. 根據錯誤跟蹤,-Djdk.net.URLClassPath.disableClassPathURLCheck=true使用任何常用方法(例如,JAVA_FLAGS)設置屬性也應該有所幫助。但我自己沒有驗證過。顯然,您甚至可以添加變通方法以~/.m2/settings.xml輕松地為所有 Maven 構建啟用它。

如您所見,錯誤跟蹤有效,問題已縮小,并且有一個固定包可用,新版本的surefire 插件即將推出!


查看完整回答
反對 回復 2021-12-10
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

將 useSystemClassloader 設置為 false:


<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-surefire-plugin</artifactId>

    <configuration>

        <useSystemClassLoader>false</useSystemClassLoader>

    </configuration>

</plugin>

如果您不是從為您定義了版本的父級(例如 Spring Boot starter)繼承,您還需要定義它。


查看完整回答
反對 回復 2021-12-10
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

我有另一種解決方法。設置環境變量_JAVA_OPTIONS。我已經將它用于我們的 TeamCity 構建代理,現在我們的構建運行良好。

_JAVA_OPTIONS=-Djdk.net.URLClassPath.disableClassPathURLCheck=true


查看完整回答
反對 回復 2021-12-10
  • 3 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號