Java 中的嵌套异常

Nested Exception in Java

我正在处理 Java 中的严重异常,如下所示:

SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'birtReportRenderer': Injection of autowired dependencies failed; 

nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void com.convergys.raspberry.server.filemgmt.FileWorker.setFileAuditTbl(com.convergys.raspberry.server.database.FileAuditTbl); 

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'fileAuditTbl': Invocation of init method failed; 

nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; 

nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'org.postgresql.Driver'

所有这些嵌套异常都是这样排列的:

exception; exception; exception; etc.

这里的事件顺序是什么?我应该查看最后一个嵌套异常并处理 JDBC,我应该从第一个异常开始还是查看其他地方?

如果您需要更多信息,请告诉我。

谢谢。

你应该从根本原因开始(堆栈跟踪的自下而上方法),所以第一个要看的,

nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'org.postgresql.Driver'

它导致了,

nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;

它又导致了其他的和 bean 创建失败。所以你需要先检查你的 postgresql 驱动程序。

另见 What is a stack trace, and how can I use it to debug my application errors?

日志中的最后一个是根本原因。您的 postgres 驱动程序有问题。

从最后一个嵌套异常开始是个好主意。这是首先抛出的异常。比阅读顶部的例外情况。

所以这会导致异常:

Cannot load JDBC driver class 'org.postgresql.Driver'

您应该自下而上地阅读堆栈跟踪,问题是您的 JDBC 驱动程序无法加载,很可能它不在类路径中。

Java 将其异常保存在堆栈中,导致异常的主要原因在堆栈底部,因此从下到上读取异常。