r2dbc / r2dbc-mssql

R2DBC Driver for Microsoft SQL Server using TDS (Tabular Data Stream) Protocol

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

java.lang.NoSuchFieldError: LOCK_WAIT_TIMEOUT with Springboot 2.6.x and R2DBC-mssql 0.9.0-Release

lovababu opened this issue · comments

spring-boot-r2dbc-starter: v2.6.3/2.6.4
JDK: 11
R2driver: r2dbc-mssql: v0.9.0-RELEASE

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.r2dbc.spi.ConnectionFactory]: Factory method 'connectionFactory' threw exception; nested exception is java.lang.NoSuchFieldError: LOCK_WAIT_TIMEOUT
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.16.jar:5.3.16]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.16.jar:5.3.16]
... 32 common frames omitted
Caused by: java.lang.NoSuchFieldError: LOCK_WAIT_TIMEOUT
at io.r2dbc.mssql.MssqlConnectionFactoryProvider.create(MssqlConnectionFactoryProvider.java:162) ~[r2dbc-mssql-0.9.0.RELEASE.jar:0.9.0.RELEASE]
at io.r2dbc.mssql.MssqlConnectionFactoryProvider.create(MssqlConnectionFactoryProvider.java:48) ~[r2dbc-mssql-0.9.0.RELEASE.jar:0.9.0.RELEASE]
at io.r2dbc.spi.ConnectionFactories.find(ConnectionFactories.java:112) ~[r2dbc-spi-0.8.6.RELEASE.jar:na]
at io.r2dbc.spi.ConnectionFactories.get(ConnectionFactories.java:142) ~[r2dbc-spi-0.8.6.RELEASE.jar:na]

Is Latest version of R2DBC not compatible with Springboot 2.6.x and JDK 11?

This is a dependency compatibility mismatch. Upgrade r2dbc-spi to 0.9.0.RELEASE or 0.9.1.RELEASE.

Thanks @mp911de it works. Apologies, thought r2dbc-spi is transitive dependency to r2dbc-mssql, somehow overlooked into the versions.

It is indeed transitive but when using an application runtime framework such as Spring Boot, dependency versions are managed by Spring Boot and transitive versions are pinned to the ones provided by Spring Boot.