diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceProperties.java index 60ad720104..1030a051c3 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceProperties.java @@ -161,7 +161,7 @@ public class DataSourceProperties implements BeanClassLoaderAware, EnvironmentAw public String getDriverClassName() { if (StringUtils.hasText(this.driverClassName)) { - Assert.state(ClassUtils.isPresent(this.driverClassName, null), + Assert.state(driverClassIsLoadable(), "Cannot load driver class: " + this.driverClassName); return this.driverClassName; } @@ -182,6 +182,20 @@ public class DataSourceProperties implements BeanClassLoaderAware, EnvironmentAw return driverClassName; } + private boolean driverClassIsLoadable() { + try { + ClassUtils.forName(this.driverClassName, null); + return true; + } + catch (UnsupportedClassVersionError ucve) { + // driver library has been compiled with a later JDK, propagate error + throw ucve; + } + catch (Throwable t) { + return false; + } + } + public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; }