XML-api.jar 类在 EClipse 4.9 中与 JAVA 11 有问题

use*_*339 7 eclipse java-9 eclipse-photon java-11

org.xml.sax 和 org.w3c.dom 类不适用于 JAVA 11 和 Eclipse Photon 4.9 & 4.10 RC2 构建

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

import org.xml.sax.DocumentHandler;
import org.xml.sax.ErrorHandler;
import org.xml.sax.DTDHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.AttributeList;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在此处输入图片说明

这些从 org.w3c.dom 和 org.xml.sax 导入的类不适用于 Eclipse SDK

版本:2018-09 (4.9) 版本号:I20180906-0745

问题描述 :

在 eclipse 工作区中导入项目后(下载了兼容 JAVA 11 的 Eclipse 4.9 版本。),这在编译这些类的过程中开始出现错误。

如果您只是使用,此错误就会消失

import org.xml.sax.*;
import org.w3c.dom.*; 
Run Code Online (Sandbox Code Playgroud)

而不是通常的完整包名称。但这只能消除错误,但不能完全帮助。因此,如果我们更进一步,想要使用和从 sax 或 w3c 导入任何特定的特定类,它不会提供选项,您甚至无法进行显式导入。所以这种方法是没有用的。

另一种解决方法是,如果我们将上面的 JRE 系统库 (JAVA 11) 放在 ECLIPSE 工作区的配置构建路径选项的 order & export 部分,那么这些导入错误就会消失。

xml-apis.jar

但这只有在我们通过 Eclipse 的编译器使用 JAVA 11 进行编译时才会发生。如果我们在 Eclipse 中切换回 JAVA 8 编译器,则相同的组合可以正常工作。

JAVA 9 也会出现此问题。

有人可以帮忙解决这个问题吗?

已经有一个 Eclipse 错误提交,但还没有任何解决方案:https : //bugs.eclipse.org/bugs/show_bug.cgi?id=536928#c12

在此处输入图片说明

Phi*_*lip 3

我不认为这个问题是 Eclipse IDE 特有的。

Java 11 现在拥有自己的 xml 包,其中包括“xml-api”等外部库中存在的所有 XML 解析 API。

因此,如果您使用此类与 XML 相关的外部 API,Java 编译器会发现同一类的多个源,因此无法解析它们。

我从 POM 定义的依赖项中排除了所有 xml-api 工件,这些工件一直从 Maven 存储库中提取“xml-api”工件。

使用

mvn 依赖项:tree -Dverbose -Dincludes xml-api:xml-api

跟踪负责拉取 XML api 的工件并排除它们。

我能够解决我的 Maven 项目中的所有此类编译错误。

Java 8 没有将 XML API 打包到其系统库中,因此在切换回 Java 8 后您没有观察到任何问题。