Android. No interface method getNetworkTimeout()I in class Ljava/sql/Connection

Рейтинг: 0Ответов: 1Опубликовано: 06.04.2023

Хочу подключить Ktorm в своем Android приложении, используя Ktorm, HikariCP и H2, но HikariCP выдает ошибку:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ru.thrownpe.tasklist, PID: 14838
    java.lang.NoSuchMethodError: No interface method getNetworkTimeout()I in class Ljava/sql/Connection; or its super classes (declaration of 'java.sql.Connection' appears in /apex/com.android.art/javalib/core-oj.jar)
        at com.zaxxer.hikari.pool.PoolBase.getAndSetNetworkTimeout(PoolBase.java:532)
        at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:402)
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
        at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
        at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81)
        at ru.thrownpe.tasklist.database.TaskDatabase.<clinit>(TaskDatabase.kt:21)
        at ru.thrownpe.tasklist.MainActivity.onCreate(MainActivity.kt:37)
        at android.app.Activity.performCreate(Activity.java:8071)
        at android.app.Activity.performCreate(Activity.java:8054)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3472)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3683)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2108)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7948)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:603)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/Process: Sending signal. PID: 14838 SIG: 9

Подключены эти зависимости:

implementation "org.ktorm:ktorm-core:3.6.0"
implementation 'com.zaxxer:HikariCP:5.0.1'
implementation 'com.h2database:h2:2.1.214'

Код подключения:

// Initialize Hikari and Ktorm
val config = HikariConfig()
config.driverClassName = "org.h2.Driver"
config.jdbcUrl = "jdbc:h2:mem:test"
config.maximumPoolSize = 3
config.isAutoCommit = false
config.transactionIsolation = "TRANSACTION_REPEATABLE_READ"
config.validate()
this.hds = HikariDataSource(config)

this.database = Database.connect(this.hds)

Ответы

▲ 0Принят

Помог ответ Eugene Krivenja

HikariCP:5.0.1 требует Java 11, чего вам Android runtime обеспечить не может. Пробуйте понижать 4.0.3 (Java 8) -> 2.4.13 (Java 7), может и заработает.