当我尝试在没有Internet连接的情况下启动tomcat时,解析位于CATALINA_HOME / conf / web.xml中的web.xml时会引发错误。 (在我的环境中,CATALINA_HOME是/usr/share/tomcat8.5)
org.apache.tomcat.util.digester.Digester.error Parse Error at line 20 column 193: Schema error: no attribute named "lang" was defined in schema : http://www.w3.org/XML/1998/namespace.
org.xml.sax.SAXParseException; systemId: file:/usr/share/tomcat8.5/conf/web.xml; lineNumber: 20; columnNumber: 193; Schema error: no attribute named "lang" was defined in schema : http://www.w3.org/XML/1998/namespace.
我已确定问题是它正试图获取位于http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd的xsd文件,但是由于它处于脱机状态,因此它不能而且web.xml命名空间不完整。
我尝试下载web-app_3_1.xsd并将其放置在/usr/share/tomcat8.5/conf/web-app_3_1.xsd中,然后通过将前几行更改为web.xml来引用它>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee web-app_3_1.xsd"
version="3.1">
,但仍然会引发相同的错误。我也尝试过指向文件
像file:///usr/share/tomcat8.5/conf/web-app_3_1.xsd一样,但是即使该文件存在并属于tomcat用户,它也抛出了FileNotFoundException
,仍然无法正常工作。>
任何帮助您解决此问题的方法或解决方法,以便在没有Internet连接的情况下进行部署!
答案 0 :(得分:0)
我们找到了一个解决方案,将STRICT_SERVLET_COMPLIANCE
中的true
从false
更改为tomcat/conf/catalina.properties
。这样可以阻止它对照其架构文件检查xml,并且由于它不再尝试获取架构文件,因此它可以脱机工作。