微妙的一個異常信息java.lang.reflect.InvocationTargetException。
這幾天項目正在不斷測試、演示中,當我把項目交給測試和實施部的時候項目一切運行正常,可是昨天一實施人員告訴我,系統部署到tomcat中啟動運行報出了一個異常,發給我看了一下,我的個乖乖,這個異常信息這么久我還是頭一次看見,於是趕緊的上網查了一下資料,后來通過各種測試,環境搭建模擬發現產生該異常信息的主要原因可能是一下幾點:
1、包沖突、有重復包或者缺少包
2、項目jdk和部署jdk版本不一樣,導致InvocationTargetException異常信息返回一個空值,沒有調用invoc里的重寫消息方法。
3、映射文件發生改變
對於不同原因的解決:
1、包:直接自己挨着查看就是了,但是一定要注意遇到重復包的時候你的系統究竟需要哪一個版本
2、jdk版本:
⑴、更換jdk包
⑵、用一個方法統一處理該異常
private static void handleException(Exception e){
String msg=null;
if(e instanceof InvocationTargetException){
Throwable targetEx=((InvocationTargetException)e).getTargetException();
if(targetEx t!=null){
msg=targetEx.getMessage();
}
}else{
msg=e.getMessage();
}
MessageDialong.openError(Activator.getDetDefault().getWorkbench().getDisplay().getActiveshell(),"error",msg);
e.printStackTrace();
}
3、映射文件發生改變
在項目中有的地方是使用反射機制進行的操作,可能對於類進行了某些更改,科室映射文件沒有更改,采用匿名就會出現這樣的問題,解決辦法要么更改映射文件,要不不要使用匿名調用。