Java 找不到适合jdbc的驱动程序:web inf\lib中存在db2jcc4.jar的db2

Java 找不到适合jdbc的驱动程序:web inf\lib中存在db2jcc4.jar的db2,java,tomcat,jdbc,Java,Tomcat,Jdbc,我正在尝试运行一个简单的JavaWeb应用程序,该应用程序连接到后端DB2数据库(IBMDashDB),以获取和检索一些数据 当我试图在ubuntu托管的Tomcat8.5上运行此应用程序时,我收到一条奇怪的错误消息。 我设法让这个应用程序在Windows上托管的TomcatV8上运行 实际的错误消息是: 找不到适合jdbc的驱动程序:db2://yp dashdb 我真的不明白为什么会发生这种情况,因为我有db2jcc4。在我的web inf\lib文件夹中。 我认为这个库有问题,所以我创建

我正在尝试运行一个简单的JavaWeb应用程序,该应用程序连接到后端DB2数据库(IBMDashDB),以获取和检索一些数据

当我试图在ubuntu托管的Tomcat8.5上运行此应用程序时,我收到一条奇怪的错误消息。 我设法让这个应用程序在Windows上托管的TomcatV8上运行

实际的错误消息是:

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

我真的不明白为什么会发生这种情况,因为我有db2jcc4。在我的web inf\lib文件夹中。

我认为这个库有问题,所以我创建了一个单独的Java应用程序,只需从数据库中连接和检索一些数据。这一个在同一个库中运行得很好

这是用于设置连接的代码(我删掉了一些细节)

请记住,这完全相同的代码在标准Java应用程序中工作,因此连接详细信息可以工作,并且连接信息中没有输入错误


有什么明显的东西是我忽略的吗

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


这是关于同一主题的另一个问题:

在花了一些时间试图找出这个问题后,我发现了问题所在。我的驱动程序没有被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());
        }
        */
/*
System.out.println(“检查驱动程序”);
枚举myDrivers=DriverManager.getDrivers();
System.out.println(myDrivers.hasMoreElements());
while(myDrivers.hasMoreElements()){
System.out.println(myDrivers.nextElement().toString());
}
*/

No luck:/I将其移动到lib文件夹,重新启动并重新部署。。同样的错误。你能给出你放入的lib文件夹的完整路径吗?我的路径是:/home/florin/Downloads/Tomcat/apache-Tomcat-8.5.6/libMaybe,试试这个:Class.forName(“com.ibm.db2.jcc.DB2Driver”);可能是linux jvm没有自动加载该类……我确实试过了。它抛出了类not found错误。您有什么版本的jar?jar文件是否包含名为
META-INF/services/java.sql.Driver
的文件?你使用的是什么版本的Java?嘿,如上所述。这个完全相同的罐子在另一只tomcat上工作。我不认为罐子漏了什么。我使用的是ibm java 1.8。你应该得到一千票!我浪费了整整一天的时间,因为我的安装程序在Windows中正常工作,但在Linux上却不能正常工作,即使使用的是完全相同版本的Java SDK!我已经发现司机没有被自动注册,这条线路救了我一天!Appreciated@HenriquedeSousa你的评论让我很高兴。
        /*
        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());
        }
        */