Pernahkah Anda menemukan situasi berikut di mana output tanpa batas konsol dari log berikut:
Logging diinisialisasi menggunakan 'class org.apache.ibatis.logging.log4j.log4jImpl' adaptor.
Logging diinisialisasi menggunakan 'class org.apache.ibatis.logging.log4j.log4jImpl' adaptor.
Logging diinisialisasi menggunakan 'class org.apache.ibatis.logging.log4j.log4jImpl' adaptor.
Logging diinisialisasi menggunakan 'class org.apache.ibatis.logging.log4j.log4jImpl' adaptor.
Logging diinisialisasi menggunakan 'class org.apache.ibatis.logging.log4j.log4jImpl' adaptor.
Kesalahan ini hanya akan terjadi jika terintegrasi dengan pegas.
Setiap kali kesalahan ini terjadi, saya tahu bahwa kesalahan XML terjadi, tetapi XML spesifik tidak dapat dikonfirmasi secara langsung, karena log di sini tidak dapat melihat informasi yang berguna.
Jika Anda ingin menemukan kesalahan ini, saya memiliki metode umum, yang secara bertahap menemukan kesalahan ini dari breakpoint entri tertentu di startup program.
Namun, metode ini masih sangat merepotkan. Yang ingin saya bicarakan di sini adalah solusi pemosisian cepat, yang sangat mudah dioperasikan.
Temukan org.springframework.beans.factory.support.AbstractAutowIreCableBeanFactory kelas, dalam metode berikut:
void autowirebyType yang dilindungi (string beanname, abstractbeandefinition mbd, beanwrapper BW, mutablePropertyValues pvs) {metode ini sekitar 1.200 baris. Temukan tempat di mana pengecualian tangkapan dalam metode ini: Catch (BeansException ex) {lempar baru tidak puas DependencyException (mbd.getResourcedescription (), beanname, propertyyname, ex);}Cukup breakpoint pada garis lemparan. Tempat ini adalah tempat pertama untuk menangkap pengecualian. Ketika kesalahan file mapper.xml, informasi pengecualian di sini adalah sebagai berikut:
Informasi pengecualian sangat rinci, teks pengecualian spesifik adalah sebagai berikut:
org.springframework.core.nestedioException:
Gagal Mengurai Sumber Daya Pemetaan:
'File [f: /liu/git/bhgl/target/franchisee-1.0/web-inf/classses/com/abel533/property/dao/empleeemapper.xml]';
Pengecualian bersarang adalah org.apache.iatis.builder.builderexception:
Kesalahan Membuat contoh dokumen.
Penyebab: org.xml.sax.saxparseException; linenumber: 1; ColumnNumber: 1; Konten tidak diperbolehkan dalam kata pengantar.
Setelah membuka kesalahan ini XML, saya menemukan kesalahan yang tidak bisa berkata -kata:
Saya tidak tahu apa situasinya, ada emplo di awal. Pada dasarnya, selama ada kesalahan dalam XML, ini adalah informasi pengecualian yang serupa, dan umumnya merupakan kesalahan dalam parsing XML.
Ada pertanyaan lain, mengapa hanya dapat melihat satu baris log dengan output tak terbatas setelah kesalahan, tetapi tidak dapat melihat informasi pengecualian spesifik di sini?
Dengan mengikuti kode, saya menemukan metode di org.springframework.beans.factory.support.AbstractBeanFactory kelas:
protected Class<?> getTypeForFactoryBean(String beanName, RootBeanDefinition mbd) {if (!mbd.isSingleton()) {return null;}try {FactoryBean<?> factoryBean = doGetBean(FACTORY_BEAN_PREFIX + beanName, FactoryBean.class, null, true);return getTypeForFactoryBean (factorybean);} catch (beanscreationexception ex) {// hanya dapat terjadi saat mendapatkan pabrik.Setelah menangkap pengecualian di sini, kembalikan null secara langsung menyebabkan pengecualian ditelan.
Karena ini adalah lapisan terakhir di mana pengecualian ditangkap, dan pengecualian yang ditangkap di tempat ini akan lebih luas, itu juga merupakan pilihan yang baik untuk melihat masalah di breakpoint di sini. Karena telah diproses melalui beberapa lapisan pengecualian, informasi kesalahan nyata tersembunyi dalam, seperti yang ditunjukkan pada gambar di bawah ini:
Melihat ini, saya percaya masalah ini akan dengan mudah diselesaikan ketika saya bertemu lagi.