为什么在Java中初始化sybase的驱动程序时会加载Oracle驱动程序?

时间:2020-03-16 17:03:03

标签: java oracle jdbc sybase

我有一个很奇怪的问题。 我有两个用Maven构建的项目。 一个项目是DAO层,另一个项目是服务层。 服务层项目依赖于DAO层项目,因此DAO层项目在服务层项目的pom中引用。 DAO层取决于oracle驱动程序和sysbase驱动程序。 当我从DAO项目运行任何测试类时,Bot数据库(oracle + sybase)会按预期工作。 但是,当我从服务层项目运行任何测试类时,总是得到下面的stacktrace。 我得到了这个堆栈跟踪信息,甚至什至都不访问oracle数据库。

我已经将oracle驱动程序作为对服务层pom的依赖项添加了,但是它没有帮助。 看起来sybase驱动程序以某种方式导致allDrivers加载(DriverManager.getDrivers()),但后来找不到oracle驱动程序。

但是:当我从DAO项目中删除oracle依赖项(根本没有任何代码更改)时,我可以在服务层项目中运行测试而没有问题。

有人知道如何解决这个问题吗?

java.lang.NoClassDefFoundError:无法初始化类 java.base / java.lang.Class.forName0上的oracle.jdbc.OracleDriver(本机 方法)在java.base / java.lang.Class.forName(Class.java:415) java.sql / java.sql.DriverManager.isDriverAllowed(DriverManager.java:555) 在 java.sql / java.sql.DriverManager.isDriverAllowed(DriverManager.java:547) 在java.sql / java.sql.DriverManager.getDrivers(DriverManager.java:449) 在java.sql / java.sql.DriverManager.getDrivers(DriverManager.java:426) 在 com.sybase.jdbc4.jdbc.SybDriver.registerWithDriverManager(SybDriver.java:711) 在com.sybase.jdbc4.jdbc.SybDriver。(SybDriver.java:140)在 com.sybase.jdbc4.jdbc.SybDriver。(SybDriver.java:104)在 de.miditec.carpark.dao.BasicDAO.createPersistenceUnit(BasicDAO.java:238)

0 个答案:

没有答案
相关问题