【问题标题】:Java 8 to openJdk 11 com.sun.org.apache.xml.internal.* types not accessibleJava 8 到 openJdk 11 com.sun.org.apache.xml.internal.* 类型不可访问
【发布时间】:2020-01-29 01:05:42
【问题描述】:

我正在将我的项目从 java 8 迁移到 openJDK 11。在我的代码中,我使用类

import com.sun.org.apache.xml.internal.dtm.DTM;
import com.sun.org.apache.xml.internal.dtm.DTMManager;
import com.sun.org.apache.xml.internal.dtm.ref.sax2dtm.SAX2DTM;
import com.sun.org.apache.xml.internal.utils.XMLStringFactory;
import com.sun.org.apache.xpath.internal.objects.XMLStringFactoryImpl

我正在使用日食。我收到类型不可访问的错误。我还用最后一次导入 How to tell eclipse to add-exports when compiling

尝试了这篇文章

但它没有工作。知道我们该如何解决这个问题吗?该错误是否意味着包已成为内部包,应该在代码中替换?

【问题讨论】:

  • 这就是为什么建议您不要明确使用供应商特定类的原因,因为它们可以在没有警告的情况下更改或消失。带上你自己的图书馆副本。
  • “带入您自己的图书馆副本”是什么意思?
  • com.sun.org.apache.xml 是 Sun 在 Java 运行时中导入现有第三方库的方式。更改他们的包,使其不会与用户提供的 org.apache.xml 包(很可能是 Xerces)发生冲突。删除这些导入,引入合适版本的 Xerces,并让您的 IDE 帮助重新导入。

标签: java


【解决方案1】:

我遇到了类似的问题,需要更新对com.sun.org.apache.xml.internal.serializer.OutputPropertiesFactory 的引用,发现我可以将其更改为:

import org.apache.xml.serializer.OutputPropertiesFactory;

如果我包含正确的 Xalan apache xml 依赖项:

        <dependency>
            <groupId>xalan</groupId>
            <artifactId>xalan</artifactId>
            <version>2.7.2</version>
        </dependency>

【讨论】:

    【解决方案2】:

    在 openJdk11 中,您必须导入 xml-security.jar(com.sun.org.apache.xml 不存在,因此您必须这样做)

    【讨论】:

      猜你喜欢
      • 2020-12-21
      • 2019-06-06
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多