如何查看嵌套异常跟踪,弹簧隐藏



当我在eclipse中调试弹簧应用时,我会变得很长的例外链。例如,我有

错误创建使用文件[... tester.xml]中定义的名称'...'的bean:错误设置属性值;嵌套异常是org.springframework.beans.propertybatchupdateexception;Nested PropertyAccessexceptions(1)是:propertyAccessException 1:org.springframework.beans.methodinvocation exception:属性'...'丢下异常;嵌套例外是Java.lang.IllegalArgumentException:...

等等。多个堆栈中有异常的弹簧,这是无趣的。我应该是下面某个地方的例外,但是春天没有显示它们。

我无法单击异常,然后像往常一样导航到问题位。

如何说弹簧以输出所有例外?

update

以下是完整的输出。可以看到,IllegalArgumentException发生的地方可能被截断了。

线程" main" org.springframework.beans.factory.beancreationexception中的异常:错误创建使用file [d: mypath  mypath  myconfig.xml]的名称'mybean'的错误创建bean:错误设置属性值;嵌套异常是org.springframework.beans.propertybatchupdateexception;Nested PropertyAccessexceptions(1)是:propertyAccessexception 1:org.springframework.beans.methodinvocation exception:属性" myproperty"丢下异常;嵌套例外是java.lang.illegalargumentException:我的异常消息    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.applypropertyvalues(Abstractautowirecapablebeanfactory.java:1361)    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(Abstractautowirecapablebeanfactory.java:1086)    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(Abstractautowirecapablebeanfactory.java:517)    at org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(Abstractautowirecapablebeanfactory.java:456)    atorg.springframework.beans.factory.support.abstractbeanfactory $ 1.GetObject(AbstractBeanFactory.java:291)    at org.springframework.beans.factory.support.defaultsingletonbeanredistry.getsingleton(defaultsingletonbeanregistor.java:222)    at org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(AbstractBeanFactory.java:288)    atorg.springframework.beans.factory.support.abstractbeanfactory.getbean(AbstractBeanFactory.java:190)    at org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatiatesingletons(defaultListablebeanfactory.java:580)    在org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(AbstractApplicationContext.java:895)    在org.springframework.context.support.abstractlicationcontext.refresh(AbstractApplicationContext.java:425)    atrg.springframework.context.support.filesystemxmlapplicationcontext。(filesystemxmlapplicationcontext.java:140)    atrg.springframework.context.support.filesystemxmlapplicationcontext。    在springtests.springrunner.main(springrunner.java:8)引起:org.springframework.beans.propertybatchupdateexception;Nested PropertyAccessexceptions(1)是:propertyAccessexception 1:org.springframework.beans.methodinvocation exception:属性'target.partner'抛出异常;嵌套例外是Java.lang.IllegalArgumentException:非法框架长度1中的显式构造函数    at org.springframework.beans.abstractpropertyaccessor.setpropertyvalues(Abstract Properpertyaccessor.java:102)    at org.springframework.beans.abstractpropertyaccessor.setpropertyvalues(Abstract Properpertyaccessor.java:58)    在org.springframework.beans.factory.support.support.abstractautowirecapablebeanfactory.applypropertyvalues(Abstractautowirecapablebeanfactory.java:1358)    ...还有13

由于可能存在多个异常,因此您需要捕获PropertyBatchUpdateException并调用getPropertyAccessExceptions()来检查特定异常的堆栈跟踪。

编辑

实际上我不太确定这里发生了什么

这是PropertyBatchUpdateExceptionprintStackTrace方法:

public void printStackTrace(PrintWriter pw) {
        synchronized (pw) {
            pw.println(getClass().getName() + "; nested PropertyAccessException details (" +
                    getExceptionCount() + ") are:");
            for (int i = 0; i < this.propertyAccessExceptions.length; i++) {
                pw.println("PropertyAccessException " + (i + 1) + ":");
                this.propertyAccessExceptions[i].printStackTrace(pw);
            }
        }
    }

它应该包括嵌套堆栈跟踪。您正在使用最新版本的春季吗?

编辑:

我能建议的最好的是在调试模式下运行,然后在AbstractAutowireCapableBeanFactory.java:1361上放一个断点,看看发生了什么。

最新更新