サーバ起動時報Error creating bean with name'sqlMapClient'defined in class.

4524 ワード

サーバが起動すると、エラー・プロンプトに従って次のエラーが表示されます.

1.Caused by: org.springframework.beans.factory.BeanCreationException:    
2.Could not autowire field: private com.huawei.support.dao.DaoManager com.huawei.support.attachment.dao.AttachmentDAO.mDaoManager;    
3.nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'daoManager':    
4.Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.   
5.BeanCreationException: Could not autowire method:   
6.public void com.huawei.support.dao.DaoManager.setSqlMap(com.ibatis.sqlmap.client.SqlMapClient);   
7.nested exception is org.springframework.beans.factory.   
8.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in class  
9.path resource [applicationContext.xml]: Invocation of init method failed; nested exception is    
10.org.springframework.core.NestedIOException: Failed to parse config resource: class path resource    
11.[sql-map-config.xml]; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML.    
12.Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'.   
13.Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.     
14.Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMap/select'.   
15.Cause: com.ibatis.sqlmap.client.SqlMapException: Error.  Could not initialize class.  Cause: java.lang.ClassNotFoundException: com.szelink.zfaq.alarm.aqyj.action.AlarmWycgBean at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:507)   
16.    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)   
17.    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:283)   
18.    ... 37 more  


(1)上記のようなエラーメッセージでは,クラスは発見されなかった.しかし、プロジェクトには、言及したクラスが確かに存在します.私が作成したアプリケーションContextかどうかを考えてみましょう.xmlプロファイルに問題があります.このプロファイルでbeanを作成するのに問題があります.
(2)その後、次のようなエラーメッセージをさらに検索して注意を喚起した.

1.Cause: com.ibatis.sqlmap.client.SqlMapException: Error.   
2.Could not initialize class.     
3.Cause: java.lang.ClassNotFoundException:com.szelink.zfaq.alarm.aqyj.action.AlarmWycgBean 

このとき、Ibatisのプロファイルに新しく追加したSQLにエラーが導入されたのではないかと疑っています.追加したばかりのSQLを削除すると、サーバーが正常に起動します.新しく追加したSQLを導入する問題を特定した場合.新しく追加したSQLは次のようになります.

	<!--   -->
	<select id="newWarnings" resultClass="java.util.HashMap" parameterClass="com.szelink.zfaq.alarm.aqyj.action.AlarmWycgBean">
		 <include refid="ORACLE_PAGE_HEADER" />
			SELECT T.* ,G.ORG_NAME FROM ( 
		      SELECT UNITID,ALARMDATE,
		      SUM(CASE WHEN  CATEGORY = '1' THEN NUMS ELSE 0 END) ONE,
		      SUM(CASE WHEN  CATEGORY = '2' THEN NUMS ELSE 0 END) TWO,
		      SUM(CASE WHEN  CATEGORY = '3' THEN NUMS ELSE 0 END) THREE,
		      SUM(CASE WHEN  CATEGORY = '4' THEN NUMS ELSE 0 END) FOUR,
		      SUM(CASE WHEN  CATEGORY = '5' THEN NUMS ELSE 0 END) FIVE,
		      SUM(CASE WHEN  CATEGORY = '6' THEN NUMS ELSE 0 END) SIX,
		      SUM(CASE WHEN  CATEGORY = '7' THEN NUMS ELSE 0 END) SEVEN,
          	  SUM(CASE WHEN  CATEGORY = '99' THEN NUMS ELSE 0 END) OTHER,
		      SUM(NUMS) TOTAL
		       FROM(
			      SELECT R.UNITID , D.CATEGORY , R.ALARMDATE,SUM(D.NUMS) NUMS FROM T_ALARM_REVIEWS R
			       INNER JOIN T_ALARM_REVIEWS_DETAILS D ON R.TID = D.PTID
			       GROUP BY R.UNITID , D.CATEGORY , R.ALARMDATE
		       ) GROUP BY UNITID ,ALARMDATE
		       ) T INNER JOIN Z_RES_ORG  G ON T.UNITID = G.ORG_ID ORDER  BY  ALARMDATE DESC, TOTAL DESC
		  <include refid="ORACLE_PAGE_FOOTER" />  
	</select>

(3)最後に、parameterClass="com.szelink.zfaq.alarm.aqyj.action.AlarmWycgBean"は、クラスに対応するプロファイルにこのような別名はありません.構成がないため、サーバがプロファイルを解析する際にクラスを認識できないため、Cause:java.lang.ClassNotFoundException: com.szelink.zfaq.alarm.aqyj.action.AlarmWycgBean
(4)最終的にはparameterClassに自分のクラスに対応するjavabeanを書き込む