更新:我只是检查我使用的最新JDBC jar,并且它错过了地图/Linux/arm/libsqlitejdbc.so,是否可以通过从某处下载此文件来解决此问题?无法在任何地方找到它。
编辑:问题似乎是这样,但我不知道如何解决这个问题。
Caused by: java.lang.Exception: Error loading native library: /org/sqlite/native/Linux/arm/libsqlitejdbc.so
我试图在我的覆盆子pi上使用SQLite数据库。但是,我无法让它发挥作用。我得到下面的输出。我正在使用JDBC驱动程序。代码在我的主计算机上正常工作。我到处搜索但无法找到解决方案。如果重要的话,我将我的代码打包到Jar文件中。
相关代码:
private final String dbLocation = "jdbc:sqlite:" + System.getProperty("user.home") + "/ServerSQLite.db";
public SQLServer() throws ClassNotFoundException {
System.out.println("DB location: " + dbLocation);
Connection connection = null;
Class.forName("org.sqlite.JDBC");
try {
// create a database connection
connection = DriverManager.getConnection(dbLocation);
输出:
DB location: jdbc:sqlite:/usr/share/tomcat7/ServerSQLite.db
Error opening connection
编辑:硬编码位置同样存在读写权限的问题:
jdbc:sqlite:/home/pi/ServerSQLite.db
Error opening connection
感谢我能得到的任何帮助:)
编辑2:我以为我打印了堆栈跟踪,但这里没有:
java.sql.SQLException: Error opening connection
...Lots of exception
Caused by: java.lang.Exception: Error loading native library: /org/sqlite/native/Linux/arm/libsqlitejdbc.so
at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:241)
...
at org.sqlite.SQLiteConnection.open(SQLiteConnection.java:175)
... 29 more
Error opening connection
问题似乎是由以下原因造成的:
java.lang.Exception: Error loading native library: /org/sqlite/native/Linux/arm/libsqlitejdbc.so
答案 0 :(得分:2)
您需要下载SQLite库的arm版本。 我找到了一个你可以得到它的地方:https://bitbucket.org/xerial/sqlite-jdbc/issue/79/compile-for-arm
答案 1 :(得分:0)
出于某种原因,看起来Pi的$HOME
被设置为只读系统位置。这是错误的,但最好的解决方法是允许用户指定一个覆盖整个文件名的属性,而不是总是使用主目录。
答案 2 :(得分:0)
我在我的POM中使用它并且对我来说很好用
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.8.10.1</version>
</dependency>
如果您只需要jar
继续: ldd(Debian GLIBC 2.19-18 + deb8u4)2.19 版权所有(C)2014 Free Software Foundation,Inc。 这是免费软件;查看复制条件的来源。没有 保证;甚至不适用于适销性或特定用途的适用性。 由Roland McGrath和Ulrich Drepper撰写。