http://www.javadby.com/shiyongjiqiao/20071205/3737.html
java.lang.ClassNotFoundException
分析:
Digester类的getClassLoader方法
/**
* Return the class loader to be used for instantiating application objects
* when required. This is determined based upon the following rules:
* <ul>
* <li>The class loader set by <code>setClassLoader()</code>, if any</li>
* <li>The thread context class loader, if it exists and the
* <code>useContextClassLoader</code> property is set to true</li>
* <li>The class loader used to load the Digester class itself.
* </ul>
*/
public ClassLoader getClassLoader() {
if (this.classLoader != null) {
return (this.classLoader);
}
if (this.useContextClassLoader) {
ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
if (classLoader != null) {
return (classLoader);
}
}
return (this.getClass().getClassLoader());
}
默认使用当前线程上下文的ClassLoader或当前类的ClassLoader
解决方法:
1) 通过配置属性
Digester用来解析应用系统的配置文件,其本身也有很可配置的属性。
属性 |
描述 |
classLoader |
指定类装载器(class loader)。ObjectCreateRule 和
FactoryCreateRule两个规则中,需要动态加载一些类(如那些盛放XML解析出来的数据的javaBean等),装载器可以在次指定。如果不指定,对这此类的加载将会利用线程上下文中的加载器(当useContextClassLoader值为真时)或利用加载Digester的那个加载器。 |
errorHandler |
指定 SAX
ErrorHandler,以在出现此类错误时调用。默认情况下,任何解析错误都会被记入日志,Digest会继续进行解析。 |
namespaceAware |
一个布尔值,为真时对XML文件的解析时会考虑元素的域名空间(如不同的域名空间的同名元素会视为不同的元素) |
ruleNamespaceURI |
指定后续加入的规则所属的命名空间,如果此值为null,则加入的规则不与任何命名空间相联系。 |
rules |
设定规则模板与XML元素的匹配处理程序。由于这个匹配程序是插件式的,所以匹配工作的完成可以用用户定义的匹配程序未完成。默认情况下,使用Digester提供的匹配器。 |
useContextClassLoader |
一个布尔值,为真时FactoryCreateRule 和 ObjectCreateRule
两个规则中对类的装载将会采用当前线程上下文中指定的加载器。默认情况下,对类的动态加载会利用加载Digester的那个装载器。 |
validating |
一个布尔值,为真时解析器会根据DTD内容对XML文档进行合法性检查,默认值是假,解析器只是检查XML是否格式良好(well
formed). | |
2)通过 setClassLoader
/**
* Set the class loader to be used for instantiating application objects
* when required.
*
* @param classLoader The new class loader to use, or <code>null</code>
* to revert to the standard rules
*/
public void setClassLoader(ClassLoader classLoader) {
this.classLoader = classLoader;
}
如:digester.setClassLoader(this.getClass().getClassLoader());
分享到:
相关推荐
使用Apache的Digester来解析XML文档,代码,有解析!
NULL 博文链接:https://longsy.iteye.com/blog/380360
标签:apache、commons、digester3、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
标签:apache、commons、digester3、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
使用Apache_Commons_Digester开发指南
Apache xml转换java对象 Digester
Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用...
org.apache.commons.digester解析XML.rar 完整的测试工程,里面有需要的四个包
解决jenkins 升级后报:FATAL: org/apache/commons/digester/Digester java.lang.ClassNotFoundException: org.apache.commons.digester.Digester 的问题
不错的解析XML的类,主要利用org.apache.commons.digester.Digester;
博文链接:https://aga.iteye.com/blog/218587
digester
Castor、digester实例 Castor、digester实例 Castor、digester实例
用Digester開發的一個小程序。
Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...
Digester的XML规则文件配置...在Digester中提供了一个包:org.apache.commons.digester.xmlrules。这个包中的类可以从一个XML文档中读取并返回一个指定的配置信息。XML文档配置文件必须使用DTD,这是xmlrules包的一部分
Digester java解析xml jar包
资源为Digester的xml解析应用案例,
如果遇到错误java.lang.NoClassDefFoundError: org/apache/commons/digester/RuleSet就下载这个包