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
添加回答
举报