背景:Hibernate使用輸入到GUI中的用戶名和密碼連接到數據庫。在失敗時,不是將錯誤作爲異常傳播,而是作爲記錄器中的堆棧跟蹤出現。我不知道這個例外在哪裏。也一點點麻煩的是以下塊:異常過早提早
if (reason != null) {
println("getConnection failed: " + reason);
throw reason;
}
我的斷點設置在罰球線(併成功觸發),但println語句,也永遠不會生成輸出(MySQL是使用某種記錄儀安裝的,我可以」找到一個開放的文件)。尋找異常被捕獲的任何技巧?
編輯1:
我打電話
sessionFactory = /*AnnotationConfiguration*/ ac.buildSessionFactory();
例外的是Hibernate某處java.sql.DriverManager
類和我HibernateUtil
類的夾縫。我認爲我們可以責怪Hibernate決定我不想看到異常。我想說服hibernate讓我看到異常。
編輯2:
我的堆棧是這樣的:
java.sql.SQLException: Access denied for user 'user'@'machine' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
/* Exception is thrown on the next line (1st code block in original post). */
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
/* Begin hidden source calls */
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
/* End hidden source calls */
at com.****.****.util.HibernateUtil.initialize(HibernateUtil.java:34)
我不能讓調試器來看看超越DriverManager.java:582棧之上的任何一點。除此之外的所有內容在調試器中都不可見。
你在哪裏尋找輸出? – 2010-07-27 15:40:07
「我不知道異常處在什麼位置」 - 好吧,你在哪裏調用Hibernate? – 2010-07-27 15:45:21
@matt b:在接下來的幾分鐘內看到更新後的編輯 @Alberto Zaccagni:NetBeans的控制檯(其他任何時候我使用過打印語句,它會到那裏)。 – 2010-07-27 15:56:41