预先感谢谁会帮助我,而不是否决这个问题:)
故事:
我使用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
的{{1}}
答案 0 :(得分:1)
javax.xml被提取为Java 9中的单独模块。
在项目的Java build path
选项中,转到Libraries
标签,然后将JDK从Classpath更改为ModulePath,这应该可以解决此问题。
让我知道是否有帮助。
答案 1 :(得分:1)
我也面临着这个问题,
这是因为DocumentBuilderFactory
也可以在其他软件包中使用。
原因
有时dependencies
随身携带transitive dependencies
例如
类XYZ
在jarA
,JarB
和JarC
中也可用。该问题直到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
名称or
或Or
这将对您有所帮助,因为这也对我有帮助。
我知道这个过程很漫长,但是您的爱戴您必须维护它。
❤享受?
答案 2 :(得分: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
我已经从 org.seleniumhq.selenium:selenium-server:jar:3.8.1:compile 中排除了 xml-apis 依赖
org.seleniumhq.selenium 硒服务器 3.8.1 xml-apis xml-apis3.我更新maven项目(Project > maven > update project) 更新 Maven 项目后,我解决了我的问题。
答案 3 :(得分:0)
我使用的是Eclipse Scout v9.0,当我从Java 1.8迁移到11时,我也遇到了同样的问题。我花了几个小时解决它,终于弄明白了。使用“ catalystOne Dupinder”提供的信息,我发现Java 11有自己的src.jar,其中包含以下类:
我刚才所做的是,我刚从Java 11将jar库导出到了Maven依赖项。
希望这对您有所帮助。