0

我有一个 java 应用程序,它尝试连接到 sqlite3 db。但它无法连接到 sqlite3 并引发以下错误。该应用程序部署在 ubuntu 服务器上。Sqlite3 是在服务器上手动安装的。

Java 环境版本如下。openjdk version "1.8.0_312" OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~18.04-b07) OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode) Ubuntu version is 20.04 lts. sqlite3 版本是 3.11.0 2016-02-15 17:29:24 sqlite-jdbc 版本:'3.34.0'

错误是

Failed to load native library:sqlite-3.34.0-35fd940a-3fda-4c48-862f-ac8a88265940-libsqlitejdbc.so. osinfo: Linux/x86_64
java.lang.UnsatisfiedLinkError: /tmp/skynet/allocator_model_testjavamodel/sqlite-3.34.0-35fd940a-3fda-4c48-862f-ac8a88265940-libsqlitejdbc.so: /tmp/skynet/allocator_model_testjavamodel/sqlite-3.34.0-35fd940a-3fda-4c48-862f-ac8a88265940-libsqlitejdbc.so: failed to map segment from shared object
java.sql.SQLException: Error opening connection
        at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:239)
        at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:61)
        at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:28)
        at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:21)
        at org.sqlite.JDBC.createConnection(JDBC.java:115)
        at org.sqlite.JDBC.connect(JDBC.java:90)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:270)
        at Utility.DbConnection.connect(DbConnection.java:16)
        at Utility.RevisionTask.run(RevisionTask.java:31)
        at java.util.TimerThread.mainLoop(Timer.java:555)
        at java.util.TimerThread.run(Timer.java:505)
Caused by: java.lang.Exception: No native library found for os.name=Linux, os.arch=x86_64, paths=[/org/sqlite/native/Linux/x86_64:/home/manajit/opt/sqlite/lib:/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]
        at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:367)
        at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:67)
        at org.sqlite.core.NativeDB.load(NativeDB.java:63)
        at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:235)

它试图找到的目录和文件很好地存在于服务器中。我确保将目录的所有权限授予运行应用程序的用户。

请注意,相同的 java 应用程序在 ubuntu 版本为 16.04 lts 的另一台服务器上运行良好。这台服务器上安装的 java 版本是 openjdk 版本“1.8.0_292” OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed模式)。

4

0 回答 0