我有一个由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中的任何位置找到该文件。
相关软件版本:
有什么建议吗?
编辑**
xsd文件的URL为https而不是常规的http
时,似乎会发生故障。答案 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中的错误更改。