3 回答

TA貢獻1860條經(jīng)驗 獲得超9個贊
要修復(fù)它(2018 年),請將您的 openjdk 更新到最新版本,至少為 8u191-b12。如果這個問題在 2020 年再次出現(xiàn),很可能是 openjdk 的默認行為發(fā)生了變化,然后您需要更新 maven surefire 插件。
這是您剛剛升級到的 openjdk-8 包中的一個現(xiàn)已修復(fù)的 錯誤(行為明顯偏離上游而無需;缺少上游補丁以恢復(fù)禁用安全檢查)。但它也是surefire插件中的一個錯誤, SUREFIRE-1588,據(jù)說在surefire 3.0.0-M1中修復(fù):它顯然在Java將來只允許相對路徑名的地方使用絕對路徑(并且Debian激活了未來的行為已經(jīng))。
軟件包版本 8u181-b13-2 說明:
應(yīng)用 8u191-b12 安全更新中的補丁。
請注意,191-b12 != 181-b13。191-b12 安全補丁幾天前剛剛發(fā)布,顯然維護人員希望盡快將它們提供給您。完全更新到 191-b12 可能需要額外的測試(好吧,顯然應(yīng)該有這個上傳)。
有幾種解決方法:
您可以從 snapshots.do安裝以前的包 。降級后,您可以
apt
使用sudo aptitude forbid-version openjdk-8-jre-headless
. 對于常規(guī)的“apt”,我沒有看到類似的禁止機制,因此您可能需要使用 apt pinning 來防止重新安裝此升級(或者您只是繼續(xù)降級,我希望這會很快得到解決)。根據(jù)錯誤跟蹤,
-Djdk.net.URLClassPath.disableClassPathURLCheck=true
使用任何常用方法(例如,JAVA_FLAGS
)設(shè)置屬性也應(yīng)該有所幫助。但我自己沒有驗證過。顯然,您甚至可以添加變通方法以~/.m2/settings.xml
輕松地為所有 Maven 構(gòu)建啟用它。
如您所見,錯誤跟蹤有效,問題已縮小,并且有一個固定包可用,新版本的surefire 插件即將推出!

TA貢獻1824條經(jīng)驗 獲得超8個贊
將 useSystemClassloader 設(shè)置為 false:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
</plugin>
如果您不是從為您定義了版本的父級(例如 Spring Boot starter)繼承,您還需要定義它。

TA貢獻1810條經(jīng)驗 獲得超4個贊
我有另一種解決方法。設(shè)置環(huán)境變量_JAVA_OPTIONS。我已經(jīng)將它用于我們的 TeamCity 構(gòu)建代理,現(xiàn)在我們的構(gòu)建運行良好。
_JAVA_OPTIONS=-Djdk.net.URLClassPath.disableClassPathURLCheck=true
添加回答
舉報