1000分请教:某个lib导致程序出错,如何知道是哪个lib?

sdyqingdao 2010-01-26 09:23:21
我本人是linux/java新手,为了混口饭吃,不得不做这个工作。我的任务是安装一套wiki系统,在公司的服务器上(linux + tomcat5.5)。老板选择了xwiki,号称开源的。对我来说非常复杂的一套系统,牵涉了maven, svn等等,以至于我在本地机器上都无法调试源代码。

我在自己的机器上安装了linux + tomcat6,然后安装xwiki,一切正常。但在服务器上安装的时候,就出了问题。日志上有大约500行的错误信息,但除非你对xwiki的绝大部分代码都熟悉,否则没有什么意义。这是我最恨它的地方。

第一次出了问题之后,折腾了两天,没办法,老板说用旧版本xwiki试试,结果就安装成功了。但页面上仍然有错误,还是几百行错误信息的那种。在官方网站上发了帖子,有人说是beanutil这个Lib需要升级,于是升级,不行;再发帖子,有人说是xerceImpl需要升级,于是升级,还是不行;再发贴,就没人理了。

期间有个xercerImpl的问题,很奇怪,在xwiki/WEB-INF/lib下面有个xercerImpl2.8.1,可是调用的时候老是调用tomcat/shared/lib下面的2.6.2,真的是很奇怪。但可以肯定不是这个lib的问题。我已经排除它了。

我今天把服务器上tomcat/shared/lib下所有的.jar一个一个的拷贝到我本地xwiki/WEB-INF/lib下面,没有出现任何问题。换了个数据库(mysql换成hibernate),错误依旧。

我想请教,该用何种方法才能找到是哪个lib造成的错误呢?(服务器上有至少30个application在运行,我不敢随便折腾的)

错误信息在这里(大约1000行错误信息,贴不下):

Error number 4001 in 4: Error while parsing velocity page Main.WebHome
Wrapped Exception: Failed to evaluate content with id [Main.WebHome]
com.xpn.xwiki.XWikiException: Error number 4001 in 4: Error while parsing velocity page Main.WebHome
Wrapped Exception: Failed to evaluate content with id [Main.WebHome]
at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:114)
at com.xpn.xwiki.render.XWikiVelocityRenderer.render(XWikiVelocityRenderer.java:85)
at com.xpn.xwiki.render.XWikiVelocityRenderer.interpret(XWikiVelocityRenderer.java:52)
at com.xpn.xwiki.render.DefaultXWikiRenderingEngine.renderText(DefaultXWikiRenderingEngine.java:269)
at com.xpn.xwiki.render.DefaultXWikiRenderingEngine.interpretText(DefaultXWikiRenderingEngine.java:175)
at com.xpn.xwiki.XWiki.parseContent(XWiki.java:1603)
at com.xpn.xwiki.api.XWiki.parseContent(XWiki.java:607)
at sun.reflect.GeneratedMethodAccessor157.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:332)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:191)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:156)
at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:108)
at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1648)
at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:657)
at sun.reflect.GeneratedMethodAccessor130.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:332)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:191)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:156)
at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:108)
at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1648)
at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:657)
at sun.reflect.GeneratedMethodAccessor130.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:332)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:191)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:156)
at com.xpn.xwiki.render.XWikiVelocityRenderer.evaluate(XWikiVelocityRenderer.java:108)
at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1703)
at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:1615)
at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:124)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:224)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:115)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.xpn.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:152)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:68)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.xpn.xwiki.web.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:295)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.xpn.xwiki.web.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:112)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
...全文
196 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dahaidao 2010-01-26
看来问题真的是挺复杂的啊。
  • 打赏
  • 举报
回复
luffyke 2010-01-26
帮你顶起来,希望你早日解决问题
  • 打赏
  • 举报
回复
bunrise 2010-01-26
哥们,老外都给你解答了,我就不回答了,试试他的方法!
  • 打赏
  • 举报
回复
sdyqingdao 2010-01-26
http://n2.nabble.com/Your-Position-gives-error-td4375071.html#a4375071
这儿有更完整的信息

[Quote=引用 8 楼 lxd520123 的回复:]
根据错误信息,基本能判断是在那几个包,然后点开看具体就知道了
不过你贴的错误信息,没贴到关键的
我现在也没办法看出来
[/Quote]
  • 打赏
  • 举报
回复
icy_csdn 2010-01-26
既然在你自己的机器上已经部署成功了,那就把你自己机器上的版本部署在服务器上,最重要的是包括tomcat。
1. 复制你机器上的tomcat到服务器(不要使用安装版),并修改tomcat端口(和服务器上原有版本不一同,否则会冲突);
2. 部署你机器上的xwiki到服务器上的这个tomcat 版本;

如果运行有问题,则根据下面排除
1. 确认系统没有设置catalina_home,如果有设置,请在修改新的tomcat配置文件,确保运行的是当前版本;如果问题解决,则说明是tomcat版本的问题;
2. 确认classpath的设置,一般classpath只需要设置成.就可以了,不需要增加其他的包;如果有问题,说明是class_path中的其他jar影响了。一般问题应该会解决

如果依然有问题,请在服务器上新建一个用户,重新部署你机器上的版本,那应该一定会成功。再根据情况排除吧。
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sdyqingdao 的回复:]
什么意思?

引用 5 楼 czmchen 的回复:
加JAR只能由低向高加

[/Quote]
版本。。
  • 打赏
  • 举报
回复
bunrise 2010-01-26
根据错误信息,基本能判断是在那几个包,然后点开看具体就知道了
不过你贴的错误信息,没贴到关键的
我现在也没办法看出来
  • 打赏
  • 举报
回复
sdyqingdao 2010-01-26
什么意思?

[Quote=引用 5 楼 czmchen 的回复:]
加JAR只能由低向高加
[/Quote]
  • 打赏
  • 举报
回复
xuexijava 2010-01-26
不懂帮顶
  • 打赏
  • 举报
回复
czmchen 2010-01-26
加JAR只能由低向高加
  • 打赏
  • 举报
回复
csd6101 2010-01-26
[Quote=引用 2 楼 dengzhangsong 的回复:]
我原来解决这方面问题的方法是这样的,希望对你有帮助:
先在本地机上搭建和服务器上一样的不环境,然后运行通过后
两边对比文件和包是否相同...
如果相同,把本地机lib下面的所有包拷去把服务器上的所有包复盖
如果不行,说明不是lib出问题
如果可行,要查出问题的最终原因,一个一个的拷了试


[/Quote]

只能这样了!
  • 打赏
  • 举报
回复
chenxizhiyi 2010-01-26
我也想知道
  • 打赏
  • 举报
回复
dengzhangsong 2010-01-26
我原来解决这方面问题的方法是这样的,希望对你有帮助:
先在本地机上搭建和服务器上一样的不环境,然后运行通过后
两边对比文件和包是否相同...
如果相同,把本地机lib下面的所有包拷去把服务器上的所有包复盖
如果不行,说明不是lib出问题
如果可行,要查出问题的最终原因,一个一个的拷了试

  • 打赏
  • 举报
回复
whereusejava 2010-01-26
部署的时候jar包有黄色感叹号的就是有问题的包
也可以根据提示信息慢慢的排除缩小范围,定位到可能有错的包
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
加入社区
帖子事件
创建了帖子
2010-01-26 09:23
社区公告
暂无公告