Gluonhq 与 JDBC SQLite :ClassNotFoundException:org.graalvm.nativeimage.hosted.RuntimeRe

问题描述 投票:0回答:1

我在 Linux 中使用 Gluonhq 和 JDBC。

版本信息:“GraalVM 22.1.0.1 Java 17 CE”

postgresql没有问题。当我使用 sqlite 时,问题就开始了。

我的 JDBC 连接:

Connection connection = DriverManager.getConnection(
    "jdbc:sqlite:/home/alex/IdeaProjects/db/base/materials.db"
);

我愿意

mvn clean gluonfx:runagent

一切正常,从sqlite数据库读取数据。

那我就做

mvn clean gluonfx:build

我得到了

java.lang.NoClassDefFoundError:org/graalvm/nativeimage/hosted/RuntimeResourceAccess org.sqlite.nativeimage.SqliteJdbcFeature.handleLibraryResources(SqliteJdbcFeature.java:54) 引起原因:java.lang.ClassNotFoundException:org.graalvm.nativeimage.hosted.RuntimeResourceAccess

这里可以查看整个maven日志

我添加了

<nativeImageArgs>
<arg>-Dorg.sqlite.lib.exportPath=/home/alex/IdeaProjects/</arg>
</nativeImageArgs>

又出现新错误

java.lang.NoClassDefFoundError:org/graalvm/nativeimage/hosted/RuntimeJNIAccess org.sqlite.nativeimage.SqliteJdbcFeature.registerJNICalls(SqliteJdbcFeature.java:70 导致:java.lang.ClassNotFoundException:org.graalvm.nativeimage.hosted.RuntimeJNIAccess

SqliteJdbcFeature.java第70行: RuntimeJNIAccess.register(NativeDB.class);

我检查了jni-config.json

{
  "name":"org.sqlite.core.DB",
  "methods":[
    {"name":"onCommit","parameterTypes":["boolean"] }, 
    {"name":"onUpdate","parameterTypes":["int","java.lang.String","java.lang.String","long"] }, 
    {"name":"throwex","parameterTypes":[] }, 
    {"name":"throwex","parameterTypes":["int"] }
  ]
},
{
  "name":"org.sqlite.core.DB$ProgressObserver",
  "methods":[{"name":"progress","parameterTypes":["int","int"] }]
},
{
  "name":"org.sqlite.core.NativeDB",
  "fields":[
    {"name":"busyHandler"}, 
    {"name":"commitListener"}, 
    {"name":"pointer"}, 
    {"name":"progressHandler"}, 
    {"name":"updateListener"}
  ],
  "methods":[
    {"name":"stringToUtf8ByteArray","parameterTypes":["java.lang.String"] }, 
    {"name":"throwex","parameterTypes":["java.lang.String"] }
  ]
}, ...

这是我的pom

救命!!

javafx graalvm gluon graalvm-native-image gluonfx
1个回答
0
投票

我通过替换依赖项重新解决了我的问题

    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.42.0.0</version>
    </dependency>

女巫

<dependency>
    <groupId>io.github.willena</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.35.5.3</version>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.