`
jiasudu1649
  • 浏览: 722841 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

apache common Digester ClassLoader故障解决

阅读更多

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文档

    Apache Digester是一个强大的Java库,专门用于将XML文档解析成对象模型。在处理XML到Java对象映射时,它提供了一种简洁的方式,避免了手动编写大量繁琐的XML解析代码。这个工具尤其适用于那些需要频繁从XML配置文件...

    Apache Commons Digester 的使用

    NULL 博文链接:https://longsy.iteye.com/blog/380360

    org.apache.commons.digester解析XML.rar

    Apache Commons Digester是一个Java库,专门用于将XML文档解析成对象结构。这个“org.apache.commons.digester解析XML.rar”压缩包包含了一个测试工程,它演示了如何使用Digester库来解析XML文件并映射到Java对象上...

    commons-digester.jar

    当你遇到`java.lang.NoClassDefFoundError: org/apache/commons/digester/RuleSet`这样的错误时,这意味着你的应用程序运行环境中缺少了Apache Commons Digester库,需要引入`commons-digester.jar`来解决这个问题。...

    利用commons-digester解析xml

    标题“利用commons-digester解析XML”涉及到的是Java开发中的一种处理XML文档的工具——Apache Commons Digester。这个库提供了一种方便的方式来映射XML文档结构到Java对象,从而简化了XML数据的处理过程。 Apache ...

    commons-digester3-3.2-API文档-中英对照版.zip

    标签:apache、commons、digester3、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    使用Apache_Commons_Digester

    ### 使用Apache Commons Digester开发指南 #### 概述 Apache Commons Digester 是一款基于 Java 的开源库,专门用于简化 XML 文件解析的过程。它利用 SAX(Simple API for XML)解析器来解析 XML 数据,并通过一...

    Apache xml转换java对象 Digester

    ### Apache XML转换Java对象——Digester #### 一、引言 在软件开发过程中,XML是一种常见的数据交换格式。为了方便地将XML数据转换为Java对象,Apache Commons库提供了一个强大的工具——`Digester`。本文将详细...

    rh-maven33-apache-commons-digester-1.8.1-19.13.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    commons-digester-1.7.jar.zip

    《Apache Commons Digester 1.7:解析XML的利器》 Apache Commons Digester是一个Java库,主要用于解析XML文档,并根据预定义的规则将其转换为Java对象。在标题和描述中提到的"commons-digester-1.7.jar.zip"是一个...

    commons-digester3-3.2-API文档-中文版.zip

    标签:apache、commons、digester3、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    jenkins subversion 插件 2.15.4

    解决jenkins 升级后报:FATAL: org/apache/commons/digester/Digester java.lang.ClassNotFoundException: org.apache.commons.digester.Digester 的问题

    commons-digester-2.1.jar.zip

    《Apache Commons Digester详解》 Apache Commons Digester是一款在Java开发中广泛使用的开源库,它提供了处理XML文档的强大工具,可以将XML数据映射到Java对象。这个库的名字"Digester"源自其功能,就像一个消化...

    commons-digester-2.0.jar.zip

    《Apache Commons Digester详解及其在Java开发中的应用》 Apache Commons Digester是一个强大的Java库,主要功能是解析XML文档,并根据预定义的规则将其转换为Java对象。在标题"commons-digester-2.0.jar.zip"中,...

    digester包

    《digester包:XML解析利器》 在Java开发中,处理XML数据是一项常见的任务,而Apache ...在使用digester时,理解其工作原理和规则的设定至关重要,这将帮助我们更好地利用这一工具,解决实际开发中的XML处理问题。

    commons-digester-2.1.jar

    `commons-digester-2.1.jar` 是Apache Commons项目中的一个组件,主要负责XML文档的解析和对象的创建与绑定。Apache Commons Digester库提供了一种规则驱动的方法来解析XML文档,并根据预定义的规则将XML数据映射到...

    commons-digester-2.0.rar源文件及jar文件

    《Apache Commons Digester 2.0:解析XML的利器》 Apache Commons Digester是一个Java库,主要用于将XML文档解析成Java对象。这个库的核心功能是根据预定义的规则(Rule)来读取XML文档,然后根据这些规则进行一...

    xml解析commons-digester的demo

    Apache Commons Digester是Java中一个强大的工具,它提供了方便的方式来解析XML文档,并将解析出的数据绑定到Java对象上,实现对象的自动创建和初始化。本示例将详细介绍如何使用Apache Commons Digester进行XML解析...

    Jakarta-Common-Digester使用笔记

    Digester不是一个XML Parser,它只是对SAX更高层次上的一个封装使用Digester,将XML映射成javaBean. 我们无须了解SAX和DOM的解析过程,只要给Digester添加一些解析规则,就能对一个xml文件进行解析。Digester使用...

    浅析Digester

    这时,Apache Commons Digester库就派上了用场。本文将深入探讨Digester的功能、工作原理以及如何在实际项目中应用。 **一、什么是Digester** Apache Commons Digester是一个用于读取XML文档并根据预定义规则自动...

Global site tag (gtag.js) - Google Analytics