不通过执行 Java 应用程序在 ARM 上加载 JDBC 库

2022-09-04 04:55:55

我们在 unix 主目录中有一个 Java 应用程序“app.jar”,其中包含一个外部 Sqlite 驱动程序库。

- myapp/app.jar
- myapp/lib/sqlite-jdbc-3.8.7.jar

设备Udoo ARM Cortex V9模拟Raspberry Pi。

java -version
java version "1.8.0_06
Java(TM) SE Runtime Environment (build 1.8.0_06-b23)
Java HotSpot(TM) Client VM (build 25.6-b23, mixed mode)

尝试运行此应用程序失败。

java -classpath lib/sqlite-jdbc-3.8.7.jar -jar myapp.jar

应用程序似乎找不到库。

java.lang.Exception: No native library is found for os.name=Linux and os.arch=arm
at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:284)
at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65)

直到现在我都找不到解决方案。是否可以将.jar文件复制到 jdk/lib 文件夹?

编辑:

现在我尝试将sqlite-jdbc-3.7.2.jar添加到JRE中,它的工作原理。

 jdk1.8.0_06/jre/lib/ext

较新的版本 sqlite-jdbc-3.8.7.jar不起作用。


答案 1

我将3.8.7版中的SQLiteJDBCLoader代码与3.7.2版进行了比较,并发现了一些见解。3.7.2似乎有一个纯java模式,而相应的代码来自3.8.7缺失。根据我的一点知识和对下载页面的快速浏览,我得出结论,人们需要一个针对目标平台的本机库。我找不到 ARM 的下载。

如果你需要一个纯java日期库,你可以选择另一个选择


答案 2

我相信你的命令行是错误的。如果使用 -jar,则将忽略 -classpath!

app中的清单.jar需要引用库,或者您需要像这样启动它:java -classpath lib/sqlite-jdbc-3.8.7.jar:myapp.jar name.of.MainClass


推荐