没有为jdbc找到合适的驱动程序:db2,其中db2jcc4.jar存在于web-inf \ lib中

时间:2016-11-08 22:37:15

标签: java tomcat jdbc

我正在尝试运行一个连接到后端DB2数据库(IBM dashdb)的简单java Web应用程序来获取一些数据。

当我尝试在ubuntu托管的tomcat 8.5上运行此应用程序时,我收到一条奇怪的错误消息。 我设法让这个应用程序在Windows上托管的tomcat v8上运行。

实际的错误消息是:

  

找不到合适的jdbc驱动程序:db2:// yp-dashdb ......

我真的不明白为什么会这样,因为我有db2jcc4。在我的web-inf \ lib文件夹中。 enter image description here

我认为库有问题所以我创建了一个单独的Java应用程序来简单地连接并从数据库中检索一些数据。对于同一个库,这个工作正常。

这是用于设置连接的代码(我修剪了一些细节)。

private Connection conn = null;   
conn= DriverManager.getConnection("jdbc:db2://yp-dashdb...");

请记住,这个完全相同的代码适用于标准Java应用程序,因此连接详细信息可以正常工作,并且连接信息中没有拼写错误。

有什么明显的东西让我在这里俯瞰吗?

2 个答案:

答案 0 :(得分:1)

花了一些时间试图弄清楚这一点后,我发现了问题。我的驱动程序没有被DriverManager注册。我发现的快速修复是在尝试加载驱动程序之前手动注册它。

DriverManager.registerDriver(new com.ibm.db2.jcc.DB2Driver());

这解决了我的问题。我发现这个的方法是打印出所有已注册的驱动程序并打印出来。不是最优雅的解决方案,但它帮助我找出了我所缺少的东西。

        /*
        System.out.println("checking for drivers");
        Enumeration<Driver> myDrivers = DriverManager.getDrivers();
        System.out.println(myDrivers.hasMoreElements());

        while(myDrivers.hasMoreElements()){
            System.out.println(myDrivers.nextElement().toString());
        }
        */

答案 1 :(得分:0)

WEB-INF / lib在您的应用程序中。可能是因为tomcat在你的应用加载之前需要这个驱动程序?尝试将其放入tomcat的lib文件夹并重新启动...

以下是关于同一主题的另一个问题:Why must the JDBC driver be put in TOMCAT_HOME/lib folder?