هل واجهت الموقف التالي حيث يتم إخراج وحدة التحكم غير المحدودة للسجل التالي:
تسجيل تهيئة باستخدام "فئة 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.abstractautowiReCableBeanfactory ، في الطريقة التالية:
void autowirebytype المحمي (سلسلة beanname ، التجريدية refinition MBD ، Beanwrapper BW ، PvablePropertyValues pvs) {هذه الطريقة حوالي 1200 سطر. ابحث عن المكان الذي استثناء الاستثناء في هذه الطريقة: catch (beansexception ex) {رمي جديد غير راضٍ عن Expendencyexception (mbd.getResourcedescription () ، beanname ، propertyName ، ex) ؛}مجرد نقطة توقف على خط الرمي. هذا المكان هو المكان الأول للقبض على الاستثناءات. عندما تكون أخطاء ملف mapper.xml ، فإن معلومات الاستثناء هنا هي كما يلي:
معلومات الاستثناء مفصلة للغاية ، ونص الاستثناء المحدد على النحو التالي:
org.springframework.core.nestedioException:
فشل تحليل مورد رسم الخرائط:
'file [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 ؛ عدد العمود: 1 ؛ المحتوى غير مسموح به في المقدمة.
بعد فتح هذا الخطأ XML ، وجدت خطأً عاجزًا عن الكلام:
لا أعرف ما هو الموقف ، هناك emplo في البداية. في الأساس ، طالما أن هناك أي خطأ في XML ، فهو معلومات استثناء مشابهة ، وهي عمومًا خطأ في تحليل XML.
هناك سؤال آخر ، لماذا يمكن فقط رؤية سطر واحد من السجلات مع إخراج لا حصر له بعد خطأ ، ولكن لا يمكن رؤية معلومات الاستثناء المحددة هنا؟
باتباع الكود ، وجدت الطريقة في فئة org.springframework.beans.factory.support.abstractbeanfactory:
فئة محمية <؟> gettypeforfactorybean (سلسلة beanname ، rootbeandefinition mbd) {if (! mbd.issingleton ()) {return null ؛} حاول {factorybean <؟ GetTyPeforFactoryBean (Factorybean) ؛} catch (beancreationException ex) {// لا يمكن أن يحدث إلا عند الحصول على مصنع.بعد اللحاق بالاستثناء هنا ، يؤدي العودة NULL بشكل مباشر إلى ابتلاع الاستثناء.
نظرًا لأن هذه هي الطبقة الأخيرة التي يتم فيها اكتشاف الاستثناءات ، وستكون الاستثناءات التي تم اكتشافها في هذا المكان أوسع ، كما أنها خيار جيد لعرض المشكلات عند نقاط التوقف هنا. نظرًا لأنه تمت معالجته من خلال طبقات متعددة من الاستثناءات ، يتم إخفاء معلومات الخطأ الحقيقية بعمق ، كما هو موضح في الشكل أدناه:
رؤية هذا ، أعتقد أن هذه المشكلة سيتم حلها بسهولة عندما أواجهها مرة أخرى.