【问题标题】:cannot access class org.jcp.xml.dsig.internal.dom.XMLDSigRI (in module java.xml.crypto)无法访问类 org.jcp.xml.dsig.internal.dom.XMLDSigRI(在模块 java.xml.crypto 中)
【发布时间】:2023-01-16 17:49:18
【问题描述】:

我们正在使用 XMLSignatureFactory 来获取如下实例。这在 JDK 12 中运行良好,但现在升级到 JDK17 时在运行时出现以下错误。任何人都可以提供意见。

String providerName = System.getProperty("jsr105Provider", "org.jcp.xml.dsig.internal.dom.XMLDSigRI");
        try {
            return XMLSignatureFactory.getInstance("DOM", (Provider) Class.forName(providerName).newInstance());

}.......

Caused by: java.lang.IllegalAccessException: class com.test.OutboundMessageHandlerImpl cannot access class org.jcp.xml.dsig.internal.dom.XMLDSigRI (in module java.xml.crypto) because module java.xml.crypto does not export org.jcp.xml.dsig.internal.dom to unnamed module @6580cfdd

【问题讨论】:

    标签: java java-17 openjdk-17


    【解决方案1】:

    Java 17 对反射/内省更加严格。

    作为快速修复,您可以在运行应用程序时添加 --add-opens java.xml.crypto/org.jcp.xml.dsig.internal.dom=ALL-UNNAMED 作为 vm 选项。但是如果可能的话,您应该将软件包升级到与 java 17 兼容的版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-11
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2020-10-12
      相关资源
      最近更新 更多