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

时间:2019-04-29 14:03:56

标签: ivy openjdk-11

预先感谢谁会帮助我,而不是否决这个问题:)

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

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

Eclipse给了我导入的建议,但是当我导入时什么也没发生,并且已经导入说 导入javax.xml.parsers.DocumentBuilder无法解析 像这样: Import says dependency not resolved

我需要的解决方案: 我需要Open JDK 11的IVY依赖关系才能支持javax.xml.parsers的{​​{1}}

screenshot my class need dependency :(

4 个答案:

答案 0 :(得分:1)

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

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

让我知道是否有帮助。

答案 1 :(得分:1)

我也面临着这个问题,

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

原因 有时dependencies随身携带transitive dependencies

例如 类XYZjarAJarBJarC中也可用。该问题直到Java8才出现,但是在Java9发布之后,Java9发布了 Java平台模块系统

此模块系统限制在同一个名称的不同jar中具有多个类,我并不是说我们在不同的类中不能具有相同的名称,为此,您必须编写module-info.java并必须转换您的应用程序进入Module System

如果您不打算将应用程序移至Module System,则可以执行此操作,删除应用程序不需要的,具有相同命名类的依赖项。

像您的问题一样可以做什么

  • eclipse中打开项目
  • ctrl + shit + T>
  • 对话框打开>输入正在创建问题的类名称,>
  • 对话框将显示包含相同class的软件包,现在 找出不需要的包装或可转让的财产 由于其他依赖性>
  • Right click(关于程序包名称),然后单击show in Package Explorer>
  • 现在,您将拥有jar Gradle remove Maven exclude Ivy`的jar from your dependency manager, Like名称orOr

这将对您有所帮助,因为这也对我有帮助。

我知道这个过程很漫长,但是您的爱戴您必须维护它。

❤享受?

答案 2 :(得分:1)

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

  1. 我已经在我的终端中执行了 mvn dependency:tree

    输出:

    [信息] +- org.seleniumhq.selenium:selenium-server:jar:3.8.1:compile [信息] | +- com.beust:jcommander:jar:1.48:compile [信息] | +- org.apache.commons:commons-text:jar:1.1:compile [信息] | +- commons-io:commons-io:jar:2.6:compile [信息] | +- commons-net:commons-net:jar:3.6:compile [信息] | +- org.w3c.css:sac:jar:1.3:compile [信息] | +- net.sourceforge.cssparser:cssparser:jar:0.9.24:compile [信息] | +- net.sourceforge.htmlunit:htmlunit:jar:2.28:compile [信息] | +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.28:compile [信息] | +- net.sourceforge.htmlunit:neko-htmlunit:jar:2.28:compile [信息] | +- net.jcip:jcip-annotations:jar:1.0:compile [信息] | +- org.seleniumhq.selenium:jetty-repacked:jar:9.4.7.v20170914:compile [信息] | +- org.eclipse.jetty:jetty-client:jar:9.4.7.v20170914:compile [信息] | +- org.eclipse.jetty:jetty-http:jar:9.4.7.v20170914:compile [信息] | +- org.eclipse.jetty:jetty-io:jar:9.4.7.v20170914:compile [信息] | +- org.eclipse.jetty:jetty-util:jar:9.4.7.v20170914:compile [信息] | +- org.eclipse.jetty:jetty-xml:jar:9.4.7.v20170914:compile [信息] | +- org.seleniumhq.selenium:htmlunit-driver:jar:2.28:compile [信息] | +- javax.servlet:javax.servlet-api:jar:3.1.0:compile [信息] | +- org.eclipse.jetty.websocket:websocket-api:jar:9.4.7.v20170914:compile [信息] | +- org.eclipse.jetty.websocket:websocket-client:jar:9.4.7.v20170914:compile [信息] | +- org.eclipse.jetty.websocket:websocket-common:jar:9.4.7.v20170914:compile [信息] | +- xalan:serializer:jar:2.7.2:compile [信息] | +- xalan:xalan:jar:2.7.2:compile [信息] | +- xerces:xercesImpl:jar:2.11.0:compile [信息] | +- xml-apis:xml-apis:jar:1.4.01:compile [信息] | - org.yaml:snakeyaml:jar:1.15:compile

  2. 我已经从 org.seleniumhq.selenium:selenium-server:jar:3.8.1:compile 中排除了 xml-apis 依赖

    org.seleniumhq.selenium 硒服务器 3.8.1 xml-apis xml-apis

3.我更新maven项目(Project > maven > update project) 更新 Maven 项目后,我解决了我的问题。

答案 3 :(得分:0)

我使用的是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”,
  • 配置了模块的构建路径,并在“订购和出口”标签下单击“ JRE系统库[JavaSE-11]”

我刚才所做的是,我刚从Java 11将jar库导出到了Maven依赖项。

希望这对您有所帮助。