Tomcat 9.0部署报错:SAXParserFactory未找到,求解决方案
解决Tomcat部署WAR包后启动报错:__redirected.__SAXParserFactory找不到
问题分析
部署新WAR包后Tomcat启动失败,核心报错为javax.xml.parsers.FactoryConfigurationError: Provider __redirected.__SAXParserFactory not found,原因是应用WAR包中打包了与Tomcat内置XML解析组件冲突的依赖JAR,覆盖了Tomcat自身的解析类加载路径,导致系统无法找到Tomcat专用的__redirected系列解析工厂类。
解决步骤
移除WAR包中的冲突依赖
解压报错的WAR包,进入WEB-INF/lib目录,删除以下可能引发冲突的JAR文件:xml-apis.jarxercesImpl.jarjaxp-api.jarsax.jar
重新打包WAR后再部署,Tomcat本身已内置这些XML解析依赖,无需应用额外携带。
调整Tomcat类加载策略(备选方案)
若无法修改WAR包,可修改Tomcat配置文件conf/context.xml,在<Context>标签中添加属性,强制应用优先使用Tomcat系统类加载器:<Context antiResourceLocking="true" antiJARLocking="true" parentClassLoader="system"> <!-- 原有配置内容 --> </Context>注意:该方法可能影响应用自身依赖加载,优先推荐第一种方案。
检查Java环境配置
确认JAVA_OPTS环境变量中是否存在自定义XML解析工厂的参数(如-Djavax.xml.parsers.SAXParserFactory=xxx),如有则删除此类参数,避免干扰Tomcat默认的解析组件加载。
内容的提问来源于stack exchange,提问作者stalachristian
相关产品推荐
相关产品推荐

