Java 17 迁移、JEP-403 和 Xerces - 不支持属性 ACCESS_EXTERNAL_DTD 和 ACCESS_EXTERNAL_SCHEMA

问题描述 投票:0回答:1

在迁移到 Java 17 时,我尝试按照 JEP-403 建议包含外部 Xerces 依赖项。 JEP-403 在“风险和假设”下明确说明了以下内容:

“使用 Xerces XML 处理器的 JDK 内部副本的代码。此类代码应使用 Xerces 库的独立副本,可从 Maven Central 获取。” (否则,这样的代码可能会失败)https://openjdk.org/jeps/403

但是,在包含 Xerces2 版本 2.12.2 后,我们的 SAXParser 使用的两个属性不再受支持,即 ACCESS_EXTERNAL_DTD 和 ACCESS_EXTERNAL_SCHEMA。

这是一个已知问题,我发现的大多数解决方案建议排除外部 Xerces(当它作为传递依赖项引入时)或使用板载 JDK 版本。

有没有更好的符合JEP-403建议的解决方案?

java java-17 saxparser xerces xerces2-j
1个回答
0
投票

因此,事实证明,JEP 部分的措辞有些误导性。他们大概想说的是,您不应该直接针对 Xerces API 进行编码,因为那样可能会出现问题。不过,使用 JAX-B API 就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.