【问题标题】:dependency not resolved: DocumentBuilderFactory class need dependency of javax.xml.parsers in openJDK 11依赖未解决:DocumentBuilderFactory 类需要 openJDK 11 中 javax.xml.parsers 的依赖
【发布时间】:2019-09-18 04:15:48
【问题描述】:

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

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

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

我需要什么作为解决方案: 我需要 Open JDK 11 的 IVY 依赖项来支持 javax.xml.parsers 以支持 DocumentBuilderFactory

【问题讨论】:

    标签: ivy openjdk-11


    【解决方案1】:

    我也遇到过这个问题,

    这是因为DocumentBuilderFactory 也可以在其他包中使用。

    原因 有时dependencies 会自己带上transitive dependencies

    例如 XYZ 类也可用于 jarAJarBJarC。这个问题直到Java8 才被发现,但在Java9 发布之后,Java9 发布了Java 平台模块系统

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

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

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

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

    我知道漫长的过程,但它是你的应用程序你的爱你必须保持这个。

    【讨论】:

      【解决方案2】:

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

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

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

      希望对大家有所帮助..

      【讨论】:

      【解决方案3】:

      javax.xml 在 Java 9 中被提取为单独的模块。

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

      如果有帮助,请告诉我。

      【讨论】:

      • 谢谢,问题已解决,我设置了模块路径和编译时间问题都没有了
      【解决方案4】:

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

      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 中排除了 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.我更新maven项目(Project > maven > update project) 更新 maven 项目后,我解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-26
        • 1970-01-01
        • 2017-05-20
        • 2017-10-29
        相关资源
        最近更新 更多