Eclipse 构建错误:在 JDK 10 升级后定位 XML 类
一些用户在切换其 Java 构建路径后遇到了令人困惑的问题Maven项目到JDK 10。Eclipse构建无法找到与XML处理相关的类,例如javax.xml.xpath.XPath 和 org.w3c.dom.Document。有趣的是,从 Eclipse 构建的 Maven 运行时没有错误。
根本原因:模块冲突
这个问题的根本原因在于项目缺少模块信息.java 文件。如果没有此文件,项目将驻留在“未命名模块”中,并读取所有可观察的命名和未命名模块,包括 JRE 中的“java.xml”和项目自己的类路径中的“xml.apis”。
唯一可见性要求
这种情况违反了Java语言规范的“唯一可见性”要求。每个限定类型名称必须有一个唯一可见的包。但是,由于“java.xml”和“xml.apis”都提供具有相同名称的包(例如 java.xml.xpath),因此会出现冲突。
潜在解决方案
要解决此问题,请考虑以下解决方案:
1.添加 module-info.java 文件
此文件允许您控制项目读取哪些模块。通过指定requires java.xml;或者需要xml.apis;,可以明确定义依赖关系,避免冲突。
2.避免 Eclipse 中的冲突
在不添加 module-info.java 文件的情况下,您仍然可以通过使用“模块化详细信息”对话框来防止 Eclipse 中的冲突。将除 java.base 之外的所有模块移至左侧(“可用模块”),并有选择地重新添加任何必要的模块。
尽管有这些解决方案,Eclipse 错误消息仍然不准确,无法查明实际问题。该消息已得到改进,但根本问题仍然存在。
以上是为什么我的 Eclipse Maven 项目升级到 JDK 10 后找不到 XML 类?的详细内容。更多信息请关注PHP中文网其他相关文章!