加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Apusic部署war出现java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/

(2013-11-15 14:32:52)
标签:

it

分类: 中间件和工具

今天把用Husdon构建的项目war包发给维护人员部署,发现在用Apusic-8部署项目war包的时候,发现一个slf4j的jar的在Apusic启动的时候老是报错,如下:

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
2013-11-15 08:26:26 错误 [con.err]      at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)
2013-11-15 08:26:26 错误 [con.err]      at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:272)
2013-11-15 08:26:26 错误 [con.err]      at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.web.container.EventBroadcaster.fireContextInitializedEvent(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.web.container.WebContainer.loadListeners(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.web.container.WebContainer.start(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.web.http.VirtualHost.addContext(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.web.http.HttpServer.loadWebModule(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.web.WebService.loadWebModule(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.WebModule.load(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.J2EEApplication.loadModules(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.J2EEApplication.startApplication(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.J2EEApplication.startService(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.service.Service.start(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.J2EEDeployer.deploy(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.J2EEDeployer.deploy(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.J2EEDeployer.deploy(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.AutoDeployer.deploy(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at com.apusic.deploy.runtime.AutoDeployer.run(Unknown Source)
2013-11-15 08:26:26 错误 [con.err]      at java.lang.Thread.run(Thread.java:662)

 

可是项目实在本地tomcat下跑的是正常的啊,问题很是纠结,以为是slf4j需要别的依赖jar或者是项目中jar版本不同的两个jar包,结果是在网上搜索一下,答案是众说纷纭,可是我做过后发现还是不能解决问题;

 

我接着开始疑问啦,如果是slf4j的本身存在的问题,那么在我本地tomcat下应该启动会出现的,可是却没出现?这是为何?我想问题肯定出现在中间件,因为一些中间件本身会自带一些jar包,会不会是这个原因?

由于对Apusic中间件的怀疑,开始找到Apusic-8\lib目录下所有jar包,一看没有自己想要的slf4j的jar包:

http://s5/mw690/002GZ6Jngy6EeTQ368Af4&690org.slf4j.spi.LocationAwareLogger.log(Lorg/" TITLE="Apusic部署war出现java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/" />
这样看来,这里的jar表面上是没有任何问题,可是,当我逐个打开jar查看其内容时,却发现一个jar包很特别,就是bean-validator.jar ,下面是解压后的文件夹:

http://s9/mw690/002GZ6Jngy6EeUde1Pa48&690org.slf4j.spi.LocationAwareLogger.log(Lorg/" TITLE="Apusic部署war出现java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/" />


猛一看很是惊奇,它本省存在一个slf4j的类,只不过它把这些放在一个jar里,怪不得项目已启动就是找不到方法,原来它默认会优先加载这个slf4j文件夹下所有的类,可是为什么会这样呢?查查才知道,原来Apuisc底层的本省就是用hibernate来实现的,所以才会有这个slf4j、hibernate、glassfish这些文件夹!

其实到这里,我清楚的知道,肯定是这个slf4j文件夹里的类跟我们项目中slf4j.jar

冲突的问题,导致了Apuisc启动报错!于是我手动解压了本地的slf4.jar,将Apusic中lib下bean-validator.jar 里的slf4j文件夹替换成本地下slf4.jar包里slf4j文件夹!这样就能保证我们发布的war和Apuisc下的slf4j版本一致啦!

启动Apuisc后,发现正常启动,没有任何问题!

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有