You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat加载标签库TLD文件失败,请求协助排查原因

问题排查与解决

错误本质

你遇到的问题是Tomcat解析birt.tld时,无法找到JSP Tag Library 1.2规范的DTD文件。原system ID指向的http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd因Sun被Oracle收购后域名失效,无法通过网络获取;同时本地也没有该DTD的缓存或本地副本,导致解析失败。

为什么会在临时路径查找

你看到的路径file:/C:/Users/OITLasGardnM/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp2/wtpwebapps/mds_web_app_java/WEB-INF/report-engine/tlds/birt.tld是Eclipse WTP插件启动Tomcat时的临时部署目录。Eclipse会自动将你的项目打包并复制到这个临时目录,Tomcat实际是从这里加载部署的应用文件,所以报错路径指向这里。

解决步骤

方法1:修改birt.tld的DOCTYPE引用(推荐)

  • 下载web-jsptaglibrary_1_2.dtd文件(可从Oracle镜像源或Maven仓库获取)
  • 在项目WEB-INF目录下新建dtds文件夹,将下载的DTD文件放入其中
  • 打开项目中的/WEB-INF/report-engine/tlds/birt.tld文件,找到顶部的DOCTYPE声明:
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    
  • 将system ID修改为本地文件路径:
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
        "/WEB-INF/dtds/web-jsptaglibrary_1_2.dtd">
    
  • 重新启动Tomcat即可

方法2:关闭Tomcat的DTD验证(应急方案)

  • 找到Tomcat安装目录下的conf/catalina.properties文件
  • 找到以下配置项,将值改为false:
    org.apache.catalina.startup.ContextConfig.dtdValidation=false
    org.apache.catalina.startup.ContextConfig.xmlValidation=false
    
  • 此方法会关闭XML和DTD验证,仅适合紧急恢复服务,不推荐长期使用

额外确认

你当前web.xml中的<taglib>配置是正确的,无需修改;只需确保项目部署时,新增的dtds目录和DTD文件被Eclipse正确复制到临时部署目录即可。

内容的提问来源于stack exchange,提问作者user3794648

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 03:05:01