如何设置嵌入式Firebird并从Java应用程序访问?

时间:2017-12-11 07:41:39

标签: firebird firebird2.5 jaybird firebird-embedded

我有一个Firebird DB文件,test.fdb在某个目录中,我想从java应用程序访问数据库。要访问的库文件是什么。

我使用Jaybird JDBC Driver访问嵌入式Firebird数据库,但我收到了错误

  

线程中的异常" main" java.lang.UnsatisfiedLinkError:没有   java.library.path中的jaybird22_x64

我尝试通过System.setProperty("java.library.path", "/home/sk/Desktop/Jaybird/");下载并添加jaybird22_x64.so文件 以及System.load() and -Djava.library.path

jaybird文件夹包含文件jaybird22_x64.so文件。

我正在使用Ubuntu 17.04,kernel 4.10.0-42-generic

这是我得到的例外。

  

线程中的异常" main" java.lang.UnsatisfiedLinkError:没有   java.library.path中的jaybird22_x64   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)

任何人都可以提供帮助,需要哪些库以及如何加载它们?

1 个答案:

答案 0 :(得分:2)

看起来Firebird网站上的二进制文件无法在Ubuntu上运行。因此,要使用嵌入在Ubuntu 17.04上的Firebird,最简单的方法是使用以下命令安装Firebird 3.0服务器:

sudo apt-get install firebird3.0-server

在安装中,请务必输入sysdba帐户的密码。

这将安装并启动一个完整的Firebird 3.0服务器,但另一种方法是自己编译Firebird。您可以使用

停止和禁用服务器进程
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-installing-firebird-on-ubuntu-16-04,但我不确定这是否仍然适用于17.04。