【问题标题】:XSD 1.1 validation failure upon using xerces with JBOSS EAP 7.1将 xerces 与 JBOSS EAP 7.1 一起使用时 XSD 1.1 验证失败
【发布时间】:2020-04-19 19:43:51
【问题描述】:

我的 Web 应用程序部署在 JBOSS EAP 7.1 服务器上并使用 jdk 1.8。我需要使用以下 xerces 依赖项针对 XSD 1.1 验证我的 XML:

<dependency>
        <groupId>org.opengis.cite.xerces</groupId>
        <artifactId>xercesImpl-xsd11</artifactId>
        <version>2.12-beta-r1667115</version>
</dependency>

我的验证代码在独立运行时运行良好。但是,当我在 JBOSS 服务器上部署我的 Web 应用程序时,相同的代码在以下行失败。

SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/XML/XMLSchema/v1.1");

我收到以下错误:

javax.xml.validation.SchemaFactoryConfigurationError: Provider for class javax.xml.validation.SchemaFactory cannot be created

如何使用 xerces 在 JBOSS EAP 7.1 中验证我的 XSD 1.1 版本?

【问题讨论】:

    标签: java xerces jboss-eap-7 xsd-1.1


    【解决方案1】:

    尝试使用this constructor,它采用工厂的类名。工厂的类是'org.apache.xerces.jaxp.validation.XMLSchema11Factory',你还需要类路径上的'xercesImpl-xsd11-2.12-beta-r1667115.jar'。

    【讨论】:

    • 我做了SchemaFactory factory = SchemaFactory.newInstance ("http://www.w3.org/XML/XMLSchema/v1.1", "org.apache.xerces.jaxp.validation.XMLSchema11Factory",null) 并在类路径上添加了xercesImpl-xsd11-2.12-beta-r1667115.jar。但是,它仍然不适合我。我仍然收到java.lang.NoSuchFieldError: W3C_XML_SCHEMA11_NS_URI
    • 您不应该收到此错误,如果有另一个 xercesimpl.jar 覆盖上述 jar,通常会发生此错误。参考:github.com/opengeospatial/ets-kml2/issues/6 类是 org.xerces.impl.Constants。我检查了上面的 jar,文件定义了字段。检查 jar 阴影,即您的应用服务器类路径是否有一个版本而 Web 应用程序是否有另一个。您正在使用 JBOSS,所以不能完全确定,但在 Tomcat 中,它会成为类加载的问题;也许两个加载类的方式相同,而不引用父类加载器,检查一次。
    • 我的 WEB-INF/lib 有两个版本不同的 xerces。我从打包中排除了不需要的版本。所以我的错误停止出现在 newInstance() 中。但是,现在我在factory.setFeature("http://apache.org/xml/features/validation/cta-full-xpath-checking",true)org.xml.sax.SAXNotRecognizedException: Feature 'http://apache.org/xml/features/validation/cta-full-xpath-checking' is not recognized 收到错误
    • 不要设置该特性,schema 1.1验证不需要,参考:xerces.apache.org/xerces2-j/features.html
    • 我在本地 maven repo 中添加了 xerces2-j(with xsd 1.1) jars。然而,在我的 jboss 中部署时,xml 验证仍然需要一些不同。我也排除了 jboss 模块中存在的 xerces。然而,它在容器内对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2014-03-27
    • 2018-07-11
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    相关资源
    最近更新 更多