คุณเคยพบสถานการณ์ต่อไปนี้หรือไม่ที่คอนโซลไม่ จำกัด ของบันทึกต่อไปนี้:
การบันทึกเริ่มต้นโดยใช้ 'คลาส org.apache.ibatis.logging.log4j.log4jimpl' อะแดปเตอร์
การบันทึกเริ่มต้นโดยใช้ 'คลาส org.apache.ibatis.logging.log4j.log4jimpl' อะแดปเตอร์
การบันทึกเริ่มต้นโดยใช้ 'คลาส org.apache.ibatis.logging.log4j.log4jimpl' อะแดปเตอร์
การบันทึกเริ่มต้นโดยใช้ 'คลาส org.apache.ibatis.logging.log4j.log4jimpl' อะแดปเตอร์
การบันทึกเริ่มต้นโดยใช้ 'คลาส org.apache.ibatis.logging.log4j.log4jimpl' อะแดปเตอร์
ข้อผิดพลาดนี้จะเกิดขึ้นหากรวมเข้ากับสปริง
ทุกครั้งที่เกิดข้อผิดพลาดนี้ฉันรู้ว่าข้อผิดพลาด XML เกิดขึ้น แต่ XML เฉพาะไม่สามารถยืนยันได้โดยตรงเนื่องจากบันทึกที่นี่ไม่สามารถดูข้อมูลที่เป็นประโยชน์ได้
หากคุณต้องการค้นหาข้อผิดพลาดนี้ฉันมีวิธีการทั่วไปซึ่งจะค่อยๆค้นหาข้อผิดพลาดนี้จากจุดพักรายการที่แน่นอนในการเริ่มต้นโปรแกรม
อย่างไรก็ตามวิธีนี้ยังคงลำบากมาก สิ่งที่ฉันต้องการพูดถึงที่นี่คือโซลูชันการวางตำแหน่งที่รวดเร็วซึ่งใช้งานง่ายมาก
ค้นหา org.springframework.beans.factory.support.abstractautowirecapablebeanfactory ในวิธีการต่อไปนี้:
Void Protected AutoWireByType (String Beanname, AbstractBeanDefinition MBD, BeanWrapper BW, MutablePropertyValues PVS) {วิธีนี้คือประมาณ 1,200 บรรทัด ค้นหาสถานที่ที่มีข้อยกเว้นในการจับในวิธีนี้: catch (beansexception ex) {โยน unsatisfieddependencyexception ใหม่ (mbd.getResourcedescription (), Beanname, PropertyName, Ex);}เพียงแค่เบรกพอยต์บนเส้นโยน สถานที่นี้เป็นสถานที่แรกที่จับข้อยกเว้น เมื่อข้อผิดพลาดของไฟล์ mapper.xml ข้อมูลข้อยกเว้นที่นี่มีดังนี้:
ข้อมูลข้อยกเว้นมีรายละเอียดมากข้อความข้อยกเว้นเฉพาะมีดังนี้:
org.springframework.core.nestedioexception:
ไม่สามารถแยกวิเคราะห์ทรัพยากรการทำแผนที่:
'ไฟล์ [f: /liu/git/bhgl/target/franchisee-1.0/web-inf/classes/com/abel533/property/dao/employeemapper.xml]';
ข้อยกเว้นที่ซ้อนกันคือ org.apache.ibatis.builder.builderexception:
ข้อผิดพลาดในการสร้างอินสแตนซ์เอกสาร
สาเหตุ: org.xml.sax.saxparseException; ผ้าลินิน: 1; คอลัมน์ Number: 1; ไม่อนุญาตให้มีเนื้อหาในคำนำ
หลังจากเปิดข้อผิดพลาด XML นี้ฉันพบข้อผิดพลาดที่ไม่พูด:
ฉันไม่รู้ว่าสถานการณ์คืออะไรมี EMPLO ในตอนแรก โดยทั่วไปตราบใดที่มีข้อผิดพลาดใด ๆ ใน XML มันเป็นข้อมูลข้อยกเว้นที่คล้ายกันและโดยทั่วไปจะเป็นข้อผิดพลาดในการแยก XML
มีคำถามอื่นทำไมสามารถดูบันทึกหนึ่งบรรทัดที่มีเอาต์พุตที่ไม่มีที่สิ้นสุดหลังจากเกิดข้อผิดพลาด แต่ไม่เห็นข้อมูลข้อยกเว้นเฉพาะที่นี่?
โดยการติดตามรหัสฉันพบวิธีการใน org.springframework.beans.factory.support.abstractbeanfactory คลาส:
คลาสที่ได้รับการป้องกัน <?> getTypeforfactoryBean (String Beanname, RootBeanDefinition mbd) {ถ้า (! mbd.issingleton ()) {return null;} ลอง {FactoryBean <?> FactoryBean = DogetBean getTypeforfactoryBean (FactoryBean);} catch (BeancreationException ex) {// สามารถเกิดขึ้นได้ก็ต่อเมื่อได้รับ stactorybean.if (logger.isdebugenabled ()) {logger.debug ("ไม่สนใจการสร้างถั่วหลังจากจับข้อยกเว้นที่นี่แล้วคืนค่าโดยตรงทำให้เกิดข้อยกเว้นที่จะกลืน
เนื่องจากนี่เป็นเลเยอร์สุดท้ายที่ถูกจับข้อยกเว้นและข้อยกเว้นที่อยู่ในสถานที่นี้จะกว้างขึ้นจึงเป็นทางเลือกที่ดีในการดูปัญหาที่จุดพักที่นี่ เนื่องจากได้รับการประมวลผลผ่านข้อยกเว้นหลายเลเยอร์ข้อมูลข้อผิดพลาดจริงจึงถูกซ่อนอยู่ลึกดังแสดงในรูปด้านล่าง:
เมื่อเห็นสิ่งนี้ฉันเชื่อว่าปัญหานี้จะได้รับการแก้ไขอย่างง่ายดายเมื่อฉันพบมันอีกครั้ง