commons-digester 在应用环境下总是出现ClassNotFoundException!

wzrlover 2008-03-02 01:41:15
总是执行到
Digester digester =DigesterLoader.createDigester(_rulesXml);

出现异常:
ERROR [Digester] (CallMethodRule) Cannot load class com.example.config.model.User
java.lang.ClassNotFoundException: com.example.config.model.User

User.class无论放在WEB-INF\classes下,还是打包成jar放在deploy\lib下错误依旧!而在TestCase里却一切正常.

WHY?
...全文
284 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzheng2001 2008-03-02
  • 打赏
  • 举报
回复
恭喜 :)
wzrlover 2008-03-02
  • 打赏
  • 举报
回复
谢谢楼上,这个问题找到了,不是因为类不在classpath,
而是系统的CLASSPATH和应用启动的配置目录包含相同的类,导致JBoss不知道如何加载类
老紫竹 2008-03-02
  • 打赏
  • 举报
回复
哦!Jboss 服务器。
这样吧,你测试一下你的程序的CLASSPATH 是否包含了你写的那个目录,请参考这个代码
在jsp/servlet里面打印一下环境信息,重点看看CLASSPATH部分!
请参考这个 http://www.java2000.net/viewthread.jsp?tid=98

  out.println("Header...."); 
Enumeration<String> e = request.getHeaderNames();
String key;
while (e.hasMoreElements()) {
key = e.nextElement();
out.println(key + "=" + request.getHeader(key));
}
out.println("Attribute....");
e = request.getAttributeNames();
while (e.hasMoreElements()) {
key = e.nextElement();
out.println(key + "=" + request.getAttribute(key));
}
out.println("Parameter....");
e = request.getParameterNames();
while (e.hasMoreElements()) {
key = e.nextElement();
out.println(key + "=" + request.getParameter(key));
}
out.println("session....");
e = request.getSession().getAttributeNames();
while (e.hasMoreElements()) {
key = e.nextElement();
out.println(key + "=" + request.getSession().getAttribute(key));
}
out.println("getServletContext ....");
e = this.getServletContext().getAttributeNames();
while (e.hasMoreElements()) {
key = e.nextElement();
out.println(key + "="
+ this.getServletContext().getAttribute(key).toString().replaceAll(";", ";\n").replaceAll(";", ";\n"));
}
out.println("CLASSPATH ....");
out.println(System.getProperty("java.class.path"));
wzrlover 2008-03-02
  • 打赏
  • 举报
回复
??真不明白你们说啥,我的应用环境:
JDK1.5
jboss-4.2.2.GA
test/WEB-INF/lib/commons-beanutils.jar
............/lib/commons-digester-1.7.jar

首先:Digester 规则文件rule-config.xml可以正确加载,定义了对应的类也就是com.example.config.model.User
其次:User.class已经在WEB-INF/classes/com/example/config/model.下
再次:就算把这个class打包成jar放在JBOSS=4.2.2.GA\server\default\lib也是抱这个ClassNotFoundException异常
老紫竹 2008-03-02
  • 打赏
  • 举报
回复
而在TestCase里却一切正常
我想他的目录正确,但可能输出目录没有设置为
WEB-INF/classes
打开这个目录,根本看不到那些java编译好的class文件,这个也有可能。不过我想楼主不至于犯这个错误吧!

至于3楼提到的,如果是这个原因的话,那楼主的java WEB 经验不会超过1个月。
老紫竹 2008-03-02
  • 打赏
  • 举报
回复
http://blog.csdn.net/java2000_net/archive/2008/01/21/2055562.aspx

也许你遇到的和这个是相同的问题,都是配置文件弄错了!
临远 2008-03-02
  • 打赏
  • 举报
回复
天哪,没有建立包名对应的目录结构吗?
老紫竹 2008-03-02
  • 打赏
  • 举报
回复
com.example.config.model.User
晕,看错了,你是否方便,把你的server.xml配置文件的appBase 和 docBase 发上来看看,我怀疑你放错了目录!
老紫竹 2008-03-02
  • 打赏
  • 举报
回复
放在tomcat/shared/lib 目录下面

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧