3 回答
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 可能需要額外的測試(好吧,顯然應該有這個上傳)。
有幾種解決方法:
您可以從 snapshots.do安裝以前的包 。降級后,您可以
apt使用sudo aptitude forbid-version openjdk-8-jre-headless. 對于常規的“apt”,我沒有看到類似的禁止機制,因此您可能需要使用 apt pinning 來防止重新安裝此升級(或者您只是繼續降級,我希望這會很快得到解決)。根據錯誤跟蹤,
-Djdk.net.URLClassPath.disableClassPathURLCheck=true使用任何常用方法(例如,JAVA_FLAGS)設置屬性也應該有所幫助。但我自己沒有驗證過。顯然,您甚至可以添加變通方法以~/.m2/settings.xml輕松地為所有 Maven 構建啟用它。
如您所見,錯誤跟蹤有效,問題已縮小,并且有一個固定包可用,新版本的surefire 插件即將推出!
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)繼承,您還需要定義它。
TA貢獻1810條經驗 獲得超4個贊
我有另一種解決方法。設置環境變量_JAVA_OPTIONS。我已經將它用于我們的 TeamCity 構建代理,現在我們的構建運行良好。
_JAVA_OPTIONS=-Djdk.net.URLClassPath.disableClassPathURLCheck=true
添加回答
舉報
