我有一个firebird db文件,test.fdb在某些目录中,我想从Java应用程序访问DB。要访问的库文件是什么。
我正在使用jaybird jdbc驱动程序访问嵌入式火鸟数据库,但我会收到错误
线程" main" java.lang.unsatisfiedlinkerror中的例外:否 jaybird22_x64 in Java.library.path
我尝试下载并添加jaybird22_x64.so文件 System.setProperty("java.library.path", "/home/sk/Desktop/Jaybird/");
以及System.load() and -Djava.library.path
jaybird文件夹包含文件jaybird22_x64.so文件。
我正在使用ubuntu 17.04,用 kernel 4.10.0-42-generic
这是我得到的例外。
线程" main" java.lang.unsatisfiedlinkerror中的例外:否 jaybird22_x64 in Java.library.path在 java.lang.classloader.loadlibrary(classLoader.java:1867)at java.lang.runtime.loadlibrary0(runtime.java:870)at java.lang.system.loadlibrary(system.java:1122)at org.firebirdsql.gds.impl.jni.jnigdsimpl.initjnibridge(jnigdsimpl.java:64) 在 org.firebirdsql.gds.impl.jni.jnigdsimpl。(jnigdsimpl.java:25) 在 org.firebirdsql.gds.impl.jni.embeddedgdsfactoryplugin.getgds(embeddedgdsfactoryplugin.java:40) 在 org.firebirdsql.gds.impl.gdsfactory.getgdsfortype(gdsfactory.java:275) 在 org.firebirdsql.jca.fbmanagedconnectionfactory.getgds(fbmanagedConnectionfactory.java:123) 在 org.firebirdsql.jdbc.abstractdriver.connect(AbstractDriver.java:130) 在java.sql.drivermanager.getConnection(drivermanager.java:664)at java.sql.drivermanager.getConnection(drivermanager.java:247)at test.testjavafirebird.main(testjavafirebird.java:33)
谁能提供帮助,需要哪些库以及如何加载它们?
看起来像Firebird网站上的二进制文件在Ubuntu上不起作用。因此,要使用嵌入在Ubuntu上的Firebird 17.04,最简单的是使用:
安装Firebird 3.0服务器sudo apt-get install firebird3.0-server
在安装中,请确保输入SYSDBA帐户的密码。
这将安装并启动完整的Firebird 3.0服务器,但另一种选择是自己编译火鸟。您可以使用
停止并禁用服务器进程sudo systemctl stop firebird3.0
sudo systemctl disable firebird3.0
接下来,您需要将自己添加到Firebird组中才能访问共享锁定文件的/tmp/firebird
:
sudo usermod -a -G firebird <your-username>
重新启动以访问该组。这不是必需的,但是如果没有我的机器上的重启,我就无法获得该组。
完成此操作后,您可以通过使用FIREBIRD_LOCK
环境变量指定锁定路径来尝试使其正常工作,而无需将自己添加到Firebird组。
接下来使用Jaybird 3.0和JNA 4.4.0运行Java应用程序。如果您想使用Jaybird 2.2,则需要编译Libjaybird22_x64.so您自己。
如果您确实需要使用Firebird 2.5,那么您可能需要查看https://askubuntu.com/questions/945327/how-to-now-to-installing-firebird-on-ubuntu-16-04,尽管我是不确定这仍然可以在17.04。