依赖关系未解决: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 XYZ
在 jarA
、JarB
和 JarC
中也可用。此问题直到 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
名称,remove
或 exclude
那个罐子
来自您的依赖管理器,例如 Gradle
或 Maven
或 Ivy
我知道漫长的过程,但它是您的应用程序,您的爱,您必须维护它。
我正在使用 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 依赖项。
希望对大家有所帮助..
我已经使用下面提到的步骤解决了同样的问题:
我在我的终端
中执行了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
- 我已经从 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.I更新maven项目(项目>maven>更新项目)
更新maven项目后我的问题就解决了。
故事:
我使用 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 XYZ
在 jarA
、JarB
和 JarC
中也可用。此问题直到 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
名称,remove
或exclude
那个罐子 来自您的依赖管理器,例如Gradle
或Maven
或Ivy
我知道漫长的过程,但它是您的应用程序,您的爱,您必须维护它。
我正在使用 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 依赖项。
希望对大家有所帮助..
我已经使用下面提到的步骤解决了同样的问题:
我在我的终端
中执行了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
- 我已经从 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.I更新maven项目(项目>maven>更新项目) 更新maven项目后我的问题就解决了。