问题描述:
从TongWeb6、tomcat7及之前老版本上移植到TongWeb7上的应用报错如下:
[2020-12-17 15:50:05 447] [SEVERE] [http-nio2-9060-exec-9] [other] [Parse error in application web.xml file at file:/opt/......./defaultroot.war/WEB-INF/web.xml]
org.xml.sax.SAXParseException; systemId: file:/opt/...../defaultroot.war/WEB-INF/web.xml; lineNumber: 642; columnNumber: 13; Error at (642, 13) : taglib definition not consistent with specification version
at com.tongweb.web.util.digester.Digester.createSAXException(Digester.java:1907)
at com.tongweb.web.util.digester.Digester.createSAXException(Digester.java:1939)
at com.tongweb.web.util.digester.Digester.startElement(Digester.java:1193)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
Caused by: java.lang.IllegalArgumentException: taglib definition not consistent with specification version
at com.tongweb.web.util.descriptor.web.TaglibLocationRule.begin(WebRuleSet.java:1289)
at com.tongweb.web.util.digester.Digester.startElement(Digester.java:1190)
... 104 more
原因:
JavaEE规范更新对web.xml中 的taglib格式做了变更,不兼容老格式。
解决办法:
修改web.xml, 如下:
修改前:
<taglib><taglib-uri>/custom</taglib-uri><taglib-location>/WEB-INF/tld/custom.tld</taglib-location>
</taglib>
<taglib><taglib-uri>/test</taglib-uri><taglib-location>/WEB-INF/tld/test.tld</taglib-location>
</taglib>
修改后增加<jsp-config>:
<jsp-config><taglib><taglib-uri>/custom</taglib-uri><taglib-location>/WEB-INF/tld/custom.tld</taglib-location></taglib><taglib><taglib-uri>/test</taglib-uri><taglib-location>/WEB-INF/tld/test.tld</taglib-location></taglib>
</jsp-config>