解析web-fragment.xml失败-无法读取架构文档'https://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd'

时间:2019-06-18 22:22:45

标签: xml maven tomcat xsd

我有一个由maven构建的Spring Web应用程序,该应用程序在Eclipse环境中运行,但是我正尝试将其部署到在Ubuntu服务器上运行的tomcat。

当我尝试将其部署到服务器时,它会抛出:

org.xml.sax.SAXParseException; systemId: 
jar:file:/usr/share/tomcat8.5/webapplications/OpenElis2/WEB-INF/lib/spring-web-5.1.7.RELEASE.jar!/META-INF/web-fragment.xml;
lineNumber: 8; columnNumber: 18; schema_reference.4: 
Failed to read schema document 
'https://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd', 
because 
    1) could not find the document; 
    2) the document could not be read; 
    3) the root element of the document is not <xsd:schema>.

我已经确认可以从服务器的此URL下载正确的xsd文件,但错误仍然存​​在。我知道许多spring xsd文件都位于其jar中,但是我无法在生成的war或spring jar中的任何位置找到该文件。

相关软件版本:

  • Tomcat 8.5
  • Java 8
  • 春季5.1.7

有什么建议吗?

编辑**

xsd文件的URL为https而不是常规的http

时,似乎会发生故障。

2 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题。

这实际上不是ssl问题(根本没有ssl日志),但是看起来http中的名称空间和https中的模式位置之间是不一致的。

一种可能的解决方案是,如果不需要此验证,则将其禁用。 将以下参数添加到您的jvm.properties中:

'b'

可能此属性已经使用-Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=false 值定义,这会导致验证。

如果您想确切了解酒店的功能,可以在the official Tomcat 8 configuration manual

查看

希望它可以解决您的问题。

答案 1 :(得分:1)

@TheCopycat的变通办法似乎不错-只是要补充一下,原因似乎是Spring Framework issue #23592中报道的spring-web 5.1.6中的错误更改。