gpt4 book ai didi

java - Linux 中的 Sqlite java.lang.UnsatisfiedLinkError

转载 作者:行者123 更新时间:2023-12-01 19:56:54 27 4
gpt4 key购买 nike

我有一个使用 Sqlite 数据库的程序。它在 Windows 上运行良好(导出的 jar 或直接在 Eclipse 中),但是当我将它移动到 Linux 服务器时(计划是使用以一定的时间间隔运行它,cron 作业)。我将其从 Eclipse 导出到 jar 并用它打包 sqlite-jdbc4-3.8.2-SNAPSHOT.jar。错误是这样的:

/$ /usr/bin/java -jar /home/username/Software.jar /home/username/
java.lang.UnsatisfiedLinkError: /tmp/sqlite-3.8.2-amd64-libsqlitejdbc.so: /tmp/sqlite-3.8.2-amd64-libsqlitejdbc.so: failed to map segment from shared object: Operation not permitted
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open(Ljava/lang/String;I)V
at org.sqlite.core.NativeDB._open(Native Method)
at org.sqlite.core.DB.open(DB.java:161)
at org.sqlite.core.CoreConnection.open(CoreConnection.java:145)
at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:66)
at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:21)
at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:23)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:44)
at org.sqlite.JDBC.createConnection(JDBC.java:113)
at org.sqlite.JDBC.connect(JDBC.java:87)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
....

所以在你问之前,我已经确保/tmp/中的 sqlite-3.8.2-amd64-libsqlitejdbc.so 具有所有权限(rwxrwxrwx)。尽管如此, native 库还是造成了问题。但它确实被复制到/tmp/文件夹中。话虽这么说,我完全迷上了 Linux...因此我几乎不知道下一步该尝试什么。

我该怎么办?开关连接器?

编辑:通过使用 System.setProperty("java.io.tmpdir", "/home/username/"); 解决了该问题显然,由于某种原因,它无法从 tmp 文件夹执行 native 库...可能是因为它是由 root 创建的。另外,我还必须恢复到 sqlite-jdbc-3.7.2.jar,因为新的在 Linux 上崩溃了。

最佳答案

我遇到了同样的问题,我在 this GitHub issue 中找到了解决方案:

JAVA_OPTS=-Djava.io.tmpdir=/path/to/some/other/tmpdir bin/cerebro

另请参阅this other SO answer .

关于java - Linux 中的 Sqlite java.lang.UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25389290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com