依赖关系未解决:DocumentBuilderFactory class 在 openJDK 11 中需要 javax.xml.parsers 的依赖关系

dependency not resolved: DocumentBuilderFactory class need dependency of javax.xml.parsers in openJDK 11

故事: 我使用 JDK8 和 IVY 作为 ANT Builder 的依赖管理器。一切都很好。我的 DocumentBuilderFactory class 能够找到 javax.xml.parsers 依赖项。

问题: 现在我转到打开 JDK11,现在 DocumentBuilderFactory 找不到 javax.xml.parsers 依赖项。

Eclipse 给了我导入的建议,但是当我导入时没有任何反应,并且已经导入说 无法解析导入 javax.xml.parsers.DocumentBuilder 像这样:

我需要的解决方案: 我需要 IVY 依赖 Open JDK 11 来支持 javax.xml.parsers for DocumentBuilderFactory

javax.xml 在 Java 9.

中被提取为单独的模块

在项目的 Java build path 选项中,转到 Libraries 选项卡并将 JDK 从类路径更改为模块路径,这应该可以解决此问题。

如果有帮助请告诉我。

我也遇到了这个问题,

这是因为 DocumentBuilderFactory 在其他软件包中也可用。

原因 有时 dependencies 自己带 transitive dependencies

例如 Class XYZjarAJarBJarC 中也可用。此问题直到 Java8 才可见,但在 Java9 发布后,Java9 发布 Java 平台模块系统 .

这个模块系统限制在不同的 jar 中有多个同名的 classes,我并不是说我们不能在不同的 classes 中有相同的名字,为此你必须编写 module-info.java 并且必须将您的应用程序转换为 Module System.

如果您不打算将您的应用程序移动到 Module System,那么您可以这样做,删除您的应用程序不需要的依赖项,这些依赖项具有相同的名称 classes。

喜欢你的问题你可以做什么

  • eclipse
  • 中打开项目
  • ctrl + shit + T >
  • 对话框打开> 写下您的 class 名称,这会造成问题,>
  • 对话框将显示包含相同 class 的包,现在 找出不需要或可传递的包 属性 因为其他依赖 >
  • Right click 包名然后点击 show in Package Explorer>
  • 现在您将拥有 jar 名称,removeexclude 那个罐子 来自您的依赖管理器,例如 GradleMavenIvy

我知道漫长的过程,但它是您的应用程序,您的爱,您必须维护它。

我正在使用 Eclipse Scout v9.0,当我从 Java 1.8 迁移到 11 时遇到了同样的问题。我花了几个小时来解决它,我终于弄明白了。使用 "catalystOne Dupinder" 提供的信息,我发现 Java 11 有自己的 src.jar 包含以下内容 class:

  • DocumentBuilder.java
  • DocumentBuilderFactory.java
  • FactoryConfigurrationErro.java
  • 等 因此 class 与 "xml-apis" 相同。所以我做了以下事情:
  • 从 Maven 依赖项中排除 "xml-apis",
  • 配置模块的构建路径并在 "Order and Export" 选项卡下单击 "JRE System Library [JavaSE-11]"

我刚刚做的是,我刚刚将 jar 库从 Java 11 导出到 maven 依赖项。

希望对大家有所帮助..


我已经使用下面提到的步骤解决了同样的问题:

  1. 我在我的终端

    中执行了mvn dependency:tree

    输出:

    [INFO] +- org.seleniumhq.selenium:selenium-server:jar:3.8.1:compile
    [INFO] |  +- com.beust:jcommander:jar:1.48:compile
    [INFO] |  +- org.apache.commons:commons-text:jar:1.1:compile
    [INFO] |  +- commons-io:commons-io:jar:2.6:compile
    [INFO] |  +- commons-net:commons-net:jar:3.6:compile
    [INFO] |  +- org.w3c.css:sac:jar:1.3:compile
    [INFO] |  +- net.sourceforge.cssparser:cssparser:jar:0.9.24:compile
    [INFO] |  +- net.sourceforge.htmlunit:htmlunit:jar:2.28:compile
    [INFO] |  +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.28:compile
    [INFO] |  +- net.sourceforge.htmlunit:neko-htmlunit:jar:2.28:compile
    [INFO] |  +- net.jcip:jcip-annotations:jar:1.0:compile
    [INFO] |  +- org.seleniumhq.selenium:jetty-repacked:jar:9.4.7.v20170914:compile
    [INFO] |  +- org.eclipse.jetty:jetty-client:jar:9.4.7.v20170914:compile
    [INFO] |  +- org.eclipse.jetty:jetty-http:jar:9.4.7.v20170914:compile
    [INFO] |  +- org.eclipse.jetty:jetty-io:jar:9.4.7.v20170914:compile
    [INFO] |  +- org.eclipse.jetty:jetty-util:jar:9.4.7.v20170914:compile
    [INFO] |  +- org.eclipse.jetty:jetty-xml:jar:9.4.7.v20170914:compile
    [INFO] |  +- org.seleniumhq.selenium:htmlunit-driver:jar:2.28:compile
    [INFO] |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
    [INFO] |  +- org.eclipse.jetty.websocket:websocket-api:jar:9.4.7.v20170914:compile
    [INFO] |  +- org.eclipse.jetty.websocket:websocket-client:jar:9.4.7.v20170914:compile
    [INFO] |  +- org.eclipse.jetty.websocket:websocket-common:jar:9.4.7.v20170914:compile
    [INFO] |  +- xalan:serializer:jar:2.7.2:compile
    [INFO] |  +- xalan:xalan:jar:2.7.2:compile
    [INFO] |  +- xerces:xercesImpl:jar:2.11.0:compile
    [INFO] |  +- xml-apis:xml-apis:jar:1.4.01:compile
    [INFO] |  \- org.yaml:snakeyaml:jar:1.15:compile
  1. 我已经从 org.seleniumhq.selenium:selenium-server:jar:3.8.1:compile
  2. 中排除了 xml-apis 依赖
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-server</artifactId>
          <version>3.8.1</version>
          <exclusions>
              <exclusion>
                  <groupId>xml-apis</groupId>
                  <artifactId>xml-apis</artifactId>
              </exclusion>
          </exclusions>
      </dependency>

3.I更新maven项目(项目>maven>更新项目) 更新maven项目后我的问题就解决了。