Большинство драйверов JDBC автоматически регистрируются, например, раньше вы просто вызывали Class.forName()
для загрузки класса драйвера, и это автоматически регистрировало бы его.
В настоящее время вам даже не нужноделайте это больше, так как они используют сервисную среду для автоматической регистрации, просто находясь в пути к классам, но поскольку ваш файл jar JDBC не находится в пути к классам, это здесь не применимо.
Поскольку вы также регистрируетесьдрайвер, он регистрируется дважды, и когда вы отменяете регистрацию, вы удаляете только созданную вами регистрацию, а не ту, которая была автоматически зарегистрирована.
Чтобы удалить автоматически зарегистрированный экземпляр, необходимо перечислить все зарегистрированныедрайверы для поиска экземпляра для отмены регистрации:
// Any Java version
for (Enumeration<Driver> e = DriverManager.getDrivers(); e.hasMoreElements(); ) {
Driver driver = e.nextElement();
if (driver.getClass().getName().equals("sap.jdbc4.sqlanywhere.IDriver"))
DriverManager.deregisterDriver(driver);
}
// Java 9+
Optional<Driver> driver = DriverManager.drivers()
.filter(d -> d.getClass().getName().equals("sap.jdbc4.sqlanywhere.IDriver"))
.findAny();
if (driver.isPresent())
DriverManager.deregisterDriver(driver.get());