3

故事: 我使用 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

截图我的班级需要依赖:(

4

4 回答 4

3

I am using Eclipse Scout v9.0, and i facing same problem when i migrated from Java 1.8 to 11. I spent hours to solve it and i finally figure it out. Using the information provided by "catalystOne Dupinder", i found out that Java 11 has its own src.jar containing the following class:

  • DocumentBuilder.java
  • DocumentBuilderFactory.java
  • FactoryConfigurrationErro.java
  • etc. same class as "xml-apis" thus. So what i did are the following:
  • exclude the "xml-apis" from maven dependency,
  • configured the build path of the module and under the "Order and Export" tab click "JRE System Library [JavaSE-11]"

What i just did is, i just exported the jar library from Java 11 to maven dependencies.

Hope this will help you guys..

于 2019-09-18T08:04:01.163 回答
3

我也遇到过这个问题

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

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

例如 Class在,中也XYZ可用。这个问题直到发布后才可见,使用Java Platform Module System发布。jarAJarBJarCJava8Java9Java9

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

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

喜欢你的问题你能做什么

  • 在中打开项目eclipse
  • ctrl+ shit+ T>
  • 对话框打开>写下你的类名,这会产生问题,>
  • 对话框将显示包含相同class的包,现在找出由于其他依赖关系而不需要或传递属性的包>
  • Right click在包名称上,然后单击show in Package Explorer>
  • 现在您将拥有jar名称removeexclude依赖项管理器中的那个 jar,LikeGradleMavenOrIvy

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

于 2019-07-13T06:58:25.590 回答
1

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

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

让我知道它是否有帮助。

于 2019-05-02T13:56:17.940 回答
1

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

  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项目(项目> maven>更新项目)更新maven项目后,我解决了我的问题。

于 2021-03-18T08:53:56.747 回答