gpt4 book ai didi

java - db2 的 ExceptionInInitializerError

转载 作者:行者123 更新时间:2023-11-30 06:35:24 26 4
gpt4 key购买 nike

我有最简单的 JDBC 程序来从 DB2(或其他配置的)实例中读取数据。当我尝试从 Eclipse 或命令行运行它时,连接失败,抛出 SQLexception

 Class.forName(jdbcDriverClassName).newInstance();

class.forName 失败,使用 com.ibm.db2.jcc.DB2Driver。我将 Eclipse 配置为指向 DBVisualizer 使用的相同驱动程序(既作为引导库又用于项目)。该程序使用与 DBVisualizer 相同的连接字符串。 DBVisualizer 没有任何问题。

带完整堆栈的输出(注意驱动程序的 FQN 不为空):

                   V-- !null driver name --V
Attempting to load com.ibm.db2.jcc.DB2Driver
ERROR:java.lang.ExceptionInInitializerError: null
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at com.ibm.db2.jcc.DB2Driver.class$(DB2Driver.java:58)
at com.ibm.db2.jcc.DB2Driver.<clinit>(DB2Driver.java:61)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at com.onlineretailer.ecomm.dumporder.DumpOrder.main(DumpOrder.java:79)
Caused by: java.lang.NullPointerException
at com.ibm.db2.jcc.am.ib.i(ib.java:490)
at com.ibm.db2.jcc.am.ib.<clinit>(ib.java:420)
... 7 more

我还尝试将 .newInstance() 添加到 class.forName() 的末尾,它继续执行相同的行为。

感谢大家的时间和意见!

最佳答案

SQLException: No suitable driver found for jdbc:db2:...

这个异常只有两个可能的原因:

  1. JDBC 驱动程序未知 DriverManager . IE。 JDBC 驱动程序未正确注册 DriverManager#registerDriver() .

  2. 对于使用 DriverManager 注册的任何 JDBC 驱动程序,JDBC URL 都是未知的。 IE。 Driver#acceptsURL()尚未为任何已注册的驱动程序返回 true

您的 JDBC 驱动程序类名完全没问题。您的 JDBC URL 非常好。

设计良好的 JDBC 驱动程序在 static {} 初始化 block 中向 DriverManager 注册自身,该初始化 block 在 Class#forName 上执行()。但是,旧版本的 IBM DB2 JDBC 驱动程序改为在构造函数 中注册自己。对于那些损坏的驱动程序,您需要调用 newInstance()之后也是。

Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();

另见:


更新 根据您的问题更新,newInstance() 成功了。然而,它导致了一个问题:

Caused by: java.lang.NullPointerException
at com.ibm.db2.jcc.am.ib.i(ib.java:490)
at com.ibm.db2.jcc.am.ib.<clinit>(ib.java:420)

事实证明这是 DB2 JDBC Driver 本身的另一个错误。升级它。

关于java - db2 的 ExceptionInInitializerError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com