我想在Raspberry Pi上使用我的java项目。这段代码依赖于sqlite4java,它使用许多平台的本机实现,包括arm处理器link。Raspberry Pi上的Sqlite4java
问题是,Java无法加载所需的ARM处理器的sqlite包装。我是做如下:
复制的所有版本(试图逐个)我改名为
libsqlite4java-linux-arm.so
预编译库(libsqlite4java-linux-armv5te.so
,libsqlite4java-linux-armv7a.so
,libsqlite4java-linux-arm.so
)的。命令
java -Djava.library.path=. -jar sqlite4java.jar -d
给输出:140213:092447.509 FINE [sqlite] Internal: loading library 140213:092447.536 FINE [sqlite] Internal: java.library.path=. 140213:092447.538 FINE [sqlite] Internal: sqlite4java.library.path=null 140213:092447.541 FINE [sqlite] Internal: cwd=/home/pi/sqlite4java-282/. 140213:092447.544 FINE [sqlite] Internal: default path=/home/pi/sqlite4java-282 140213:092447.554 FINE [sqlite] Internal: forced path=null 140213:092447.558 FINE [sqlite] Internal: os.name=linux; os=linux 140213:092447.562 FINE [sqlite] Internal: os.arch=arm 140213:092447.575 FINE [sqlite] Internal: trying to load sqlite4java-linux-arm from /home/pi/sqlite4java-282/libsqlite4java-linux-arm.so 140213:092447.596 FINE [sqlite] Internal: cannot load sqlite4java-linux-arm from /home/pi/sqlite4java-282/libsqlite4java-linux-arm.so: java.lang.UnsatisfiedLinkError: /home/pi/sqlite4java-282/libsqlite4java-linux-arm.so: /home/pi/sqlite4java-282/libsqlite4java-linux-arm.so: cannot open shared object file: No such file or directory 140213:092447.605 FINE [sqlite] Internal: trying to load sqlite4java-linux-arm 140213:092447.617 FINE [sqlite] Internal: cannot load sqlite4java-linux-arm: java.lang.UnsatisfiedLinkError: /home/pi/sqlite4java-282/libsqlite4java-linux-arm.so: /home/pi/sqlite4java-282/libsqlite4java-linux-arm.so: cannot open shared object file: No such file or directory 140213:092447.622 FINE [sqlite] Internal: trying to load sqlite4java-linux 140213:092447.627 FINE [sqlite] Internal: cannot load sqlite4java-linux: java.lang.UnsatisfiedLinkError: no sqlite4java-linux in java.library.path 140213:092447.638 FINE [sqlite] Internal: trying to load sqlite4java 140213:092447.642 FINE [sqlite] Internal: cannot load sqlite4java: java.lang.UnsatisfiedLinkError: no sqlite4java in java.library.path 140213:092447.645 FINE [sqlite] Internal: trying to load sqlite4java-linux-arm-d 140213:092447.660 FINE [sqlite] Internal: cannot load sqlite4java-linux-arm-d: java.lang.UnsatisfiedLinkError: no sqlite4java-linux-arm-d in java.library.path 140213:092447.676 FINE [sqlite] Internal: trying to load sqlite4java-linux-d 140213:092447.680 FINE [sqlite] Internal: cannot load sqlite4java-linux-d: java.lang.UnsatisfiedLinkError: no sqlite4java-linux-d in java.library.path 140213:092447.683 FINE [sqlite] Internal: trying to load sqlite4java-d 140213:092447.699 FINE [sqlite] Internal: cannot load sqlite4java-d: java.lang.UnsatisfiedLinkError: no sqlite4java-d in java.library.path Error: cannot load SQLite java.lang.UnsatisfiedLinkError: /home/pi/sqlite4java-282/libsqlite4java-linux-arm.so: /home/pi/sqlite4java-282/libsqlite4java-linux-arm.so: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1843) at java.lang.Runtime.load0(Runtime.java:795) at java.lang.System.load(System.java:1061) at com.almworks.sqlite4java.Internal.tryLoadFromPath(Internal.java:337) at com.almworks.sqlite4java.Internal.loadLibraryX(Internal.java:117) at com.almworks.sqlite4java.SQLite.main(SQLite.java:368)
试图建立
LD_LIBRARY_PATH
到/usr/lib/arm-linux-gnueabihf
和/usr/lib
在给定的路径文件存在。我已经安装了sqlite3
和libsqlite3-dev
。我使用的是QEMU仿真器的最新raspbian发行:
$ uname -a
$ Linux raspberrypi 3.10.26+ #2 Fri Jan 17 22:13:59 EST 2014 armv6l GNU/Linux
任何帮助将是有益的。
谢谢!
我似乎面临同样的问题,但有点不确定如何将来源放到我的PI并运行您的命令。任何机会,你可以上传你的内置.so文件下载? – Gillardo
汇编很顺利。将'/ usr/lib/jvm/jdk-7-oracle-armhf /'目录更新为Java版本,并删除'-mno-cygwin'。在树莓派里花了大约10分钟。 – lepe