带有Gradle自定义运行时图像的SQLITE JDBC



我已经在build.gradle中添加了SQLITE,并且正在尝试使用Gradle 4.10中的org.beryx.jlink插件创建自定义运行时图像。运行图像时,我会收到错误:No suitable driver found for jdbc:sqlite:

这个问题,这个问题处理了一个类似的问题,但不是在运行时图像。

我在build.gradle中添加了sqlite:

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.7'
    id 'org.beryx.jlink' version '2.9.4'
}
repositories {
    mavenCentral()
}
javafx {
    version = "12"
    modules = [ 'javafx.controls', 'javafx.fxml']
}
dependencies {
    compile 'org.xerial:sqlite-jdbc:3.20.1'
}
jlink {
    launcher {
        name = 'bankstatementprocessor'
    }
}

一旦我想连接到代码中的sqlite db,我就会得到错误 No suitable driver found for jdbc:sqlite:

conn = DriverManager.getConnection(CONNECTION_STRING);

作为验证,我包括以下内容:

Class.forName("org.sqlite.JDBC");

,我收到错误: java.lang.ClassNotFoundException: org.sqlite.JDBC

似乎有一种方法可以用Maven解决此问题,如下所示:

当我简单地使用./gradlew run运行项目时,没有错误;但是,该图像似乎没有注册SQLite驱动程序。

获得所需结果的一种可能方法是在运行时选择JDBC驱动程序。我不是这种方法的粉丝,因为我觉得在build.gradle文件中应该有一种更干净的方法。

jlink {
    ...
    forceMerge("sqlite")
    ...
}

https://badass-jlink-plugin.beryx.org/releases/latest/#_methods

最新更新