Я тут надумал перевести мой учебный проект с MySQL на встраиваемую
СУБД, которая умеет работать с хранимыми процедурами. Firebird
Embedded вроде такое умеет.
Но никак не разберусь, что от меня требует JayBird
Учебный проект разрабатывался в IDE Eclipse.
ОС Win 7 x64.
Папка проекта для тестового запуска (создание соединения с БД)
находится в D:\Java\Projects\FirebirdEmbedded.

Привожу текст тестового подключения:
package test;
import java.sql.*;
public class Main {
    public static void main(String[] args) throws
ClassNotFoundException, SQLException {
        Class.forName("org.firebirdsql.jdbc.FBDriver");
        Connection bd =
DriverManager.getConnection("jdbc:firebirdsql:embedded:database.fdb");
        Statement st = bd.createStatement();
        st.execute("create table if not exists 'TABLE1' ('name1' int,
'name2' text, 'name3' text);");
        st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3')
values (1, 'name1', 'name2'); ");
        st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3')
values (2, 'name3', 'name4'); ");
        st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3')
values (3, 'name5', 'name6');");
        ResultSet rs = st.executeQuery("select * from TABLE1");
        while (rs.next())
            {
                System.out.print  (rs.getString(1)+" ");
                System.out.print  (rs.getString(2)+" ");
                System.out.println(rs.getString(3));
            }
    }
}

При запуске выводит эксепшн:
Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\Java
\Projects\FirebirdEmbedded\jaybird21.dll: Can't find dependent
libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at
org.firebirdsql.gds.impl.jni.JniGDSImpl.initJNIBridge(JniGDSImpl.java:
5
at org.firebirdsql.gds.impl.jni.JniGDSImpl.<clinit>(JniGDSImpl.java:
23)
at
org.firebirdsql.gds.impl.jni.EmbeddedGDSFactoryPlugin.getGDS(EmbeddedGDSFactoryPlugin.java:
40)
at org.firebirdsql.gds.impl.GDSFactory.getGDSForType(GDSFactory.java:
219)
at
org.firebirdsql.jca.FBManagedConnectionFactory.getGDS(FBManagedConnectionFactory.java:
117)
at org.firebirdsql.jdbc.FBDriver.connect(FBDriver.java:125)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at test.Main.main(Main.java:16)

Что я делал:
Скопировал всё содержимое папки D:\Downloads
\Firebird-2.5.0.26074-0_Win32_embed в папку D:\Java\Projects
\FirebirdEmbedded.
Скопировал всё содержимое папки D:\Downloads\Jaybird-2.1.6JDK_1.6 в
папку D:\Java\Projects\FirebirdEmbedded.
Создал глобальную переменную "FIREBIRD" с содержимым "D:\Java\Projects
\FirebirdEmbedded".
Добавил в глобальную переменную "PATH" текст ";D:\Java\Projects
\FirebirdEmbedded".

Также были проделаны следующие манипуляции:
Скачал Dependency Walker, проверил, все ли зависимые библиотеки есть в
папке.
Посмотрел, добавил msvcr71.dll в папку с проектом.
Всё равно не запускается.
Перенёс всё это добро с Win7 x64 в виртуальную машину на Win XP x32.
Вроде заработало.
Почему в одной системе не работает, а в другой работает?

Кто может помочь?

Ответить