使用OSGI内嵌的jetty进行web开发时:遇到no suitable log constructor错误解决办法
Posted on 2012-05-17 18:22 woshixdl 阅读(667) 评论(0) 编辑 收藏 举报使用osgi内嵌jetty作为web服务器进行web开发时,遇到错误:
org.apache.commons.logging.logconfigurationexception:no suitable log constructor [Ljava.lang.class;@1ccf0ad for org.apache.commons.logging.impl.log4jlogger(caused by java.lang.noclassdeffounderror:org/apache/log4j/category)]
被这个问题困扰了一天,把包换来换去都不行,上网查了以后发现如下两个解决方法:
1、log4j和commons-log不兼容:出现这种情况的多是在使用Web容器时出现,例如Tomcat。
解决的方法是删除掉$tomcat/commens/lib/下面的commens-log.jar文件
2、类包的加载顺序出错:出现这种情况多是各类包的加载顺序不正确所致,我并没有去深究一个工程启动时各类包的加载顺序是怎样的,不过我的错误就属于这种。
解决的方法是查看是否将一些类包直接放到了%java_home%/jre/lib/ext文件夹的下面,如果有,删除后即可解决。
上述方法试了还是不行(那叫一个崩溃啊。。。),后来在老大的帮助下找到个帖子发现需要为apache.commons.logging.log手动指定一个实现类,可在vm arguments中添加如下配置:
-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
就这样 ,让我纠结两天的问题解决了。