如果你也遇到同样的报错问题, 查看本文章,可以直接帮你节省大约2小时时间
commons-digester 已经很久没有维护了, 这次在升级 feilong 到3 的时候, 顺便也升级下 commons-digester3 依赖
1. 升级依赖的jar
org.apache.commons
commons-digester3
3.2
2 报错 1 DigesterLoader.createDigester
升级后, 发现找不到 DigesterLoader.createDigester 方法了
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
Digester digester = DigesterLoader.createDigester(new InputSource(contextClassLoader.getResourceAsStream(RULE_FILE)));
private static Digester build(String file){
try{
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
Digester digester = DigesterLoader.newLoader(new FromXmlRulesModule(){
@Override
protected void loadRules(){
loadXMLRules(new InputSource(contextClassLoader.getResourceAsStream(RULE_FILE)));
}
}).newDigester();
digester.setValidating(false);
return digester;
}catch (Exception e){
throw new DefaultRuntimeException("can not create Digester from: " + file, e);
}
}
3 报错 2 文档根元素 "digester-rules" 必须匹配 DOCTYPE 根 "null"
执行代码,报错
17:25:30 ERROR (Digester.java:1526) [error()] Parse Error at line 2 column 17: 文档根元素 "digester-rules" 必须匹配 DOCTYPE 根 "null"。
org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 17; 文档根元素 "digester-rules" 必须匹配 DOCTYPE 根 "null"。
我拿我的rule xml 和官网单元测试里面的rule xml 进行对比 ,然后将xml 最顶部代码改成
解决问题