這兩天同事的項目工程突然出現了故障,web包發布后,不斷地拋異常,由于剛好我在修改登陸的頁面,所以他們不約而同地認為是我搞得鬼,天可憐見,我可是一安分守己之公民啊,沒辦法,只好削尖了頭往問題里鉆,但是愣沒看出個所以然,,好暈阿。于是拿到其他同事的機器上面部署,一切OK,更暈
!!!!!!
第一次打開index.jsp時,異常如下:
Error 500--Internal Server Error
java.lang.ExceptionInInitializerError
?at jsp_servlet.__login._jspService(__login.java:209)
?at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
?at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
?at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
?at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:446)
?at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
?at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6354)
?at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
?at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
?at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
?at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
?at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
?at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
Caused by: java.util.MissingResourceException: Can't find bundle for base name org.apache.struts.taglib.html.LocalStrings, locale zh_CN
?at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:804)
?at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:773)
?at java.util.ResourceBundle.getBundle(ResourceBundle.java:511)
?at org.apache.struts.util.MessageResources.(MessageResources.java:102)
?at org.apache.struts.util.MessageResources.getMessageResources(MessageResources.java:579)
?at org.apache.struts.taglib.html.FormTag.(FormTag.java:140)
?... 13 more
然后刷新了一下頁面,馬上就變了:
java.lang.NoClassDefFoundError
?at jsp_servlet.__login._jspService(__login.java:209)
?at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
?at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:971)
?at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:402)
?at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
?at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6354)
?at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
?at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
?at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3635)
?at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2585)
?at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
?at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
這個錯誤實屬可恨,給我造成了很大的誤解,初一看,哦,很明顯嘛,是Struts標簽的問題,沒難度的,打開頁面開始查找,一看,原來是說formbean找不到了,不可能阿,這怎么會找不到呢?,這個用了幾年了,不可能出問題阿!
又調了幾次,實在受不了了,干脆把struts標簽搞掉算了,這下問題又變了,說是資源文件找不到了,很可惜,這個異常沒有記錄下來。。。。。。。重裝了服務器,仍然不行,痛苦啊!
后來換了個用戶登錄了一下,驚奇的發現竟然可以正常運行,,恩,還不算太壞,于是才發現原來是環境變量出了問題,classpath配置到了另一個項目中,
。去掉了這個環境變量后,一切OK!
做項目時,真的要細心細心再細心阿,環境變量這個東西,太容易在項目開發過程中忽視了,但有時問題就偏偏出在這上面,這樣當問題出現時,就很難真正的發現錯誤的源泉,解決起來只能靠時間和經驗了,同時,希望大家在做項目時盡量不要交叉進行,否則,出現莫名其妙的問題的幾率太大了!
特寫于此,以對自己以示警戒!