Firebird и разные версии JVM

Я пытаюсь создать приложение Java, используя встроенный сервер Firebird.

Проблема заключается в следующем: я хочу, чтобы приложение работало как с 32-разрядной версией Java, так и с 64-разрядной версией Java (без каких-либо изменений со стороны клиента).

Чтобы запустить Firebird, мне нужно добавить jaybird22.dll и jaybird22_x64.dll в основной каталог приложения - пока все в порядке, но в этом каталоге также должно быть: ib_util.dll icudt30.dll и т. Д., Которые различаются для разных версий JVM.

Есть ли решение этой проблемы?


person Dziurdziak Mateusz    schedule 26.06.2013    source источник


Ответы (1)


Короткий ответ: нет, нельзя.

Вам необходимо включить файлы правильной разрядности для Firebird, встроенного в корень вашего приложения, а поскольку библиотеки 32-разрядной и 64-разрядной версий встроенного Firebird имеют одинаковые имена, невозможно включить их оба.

ОБНОВЛЕНИЕ К моему стыду (как разработчику Jaybird;), я только что обнаружил, что на самом деле можно работать как с 32-битными, так и с 64-битными версиями, встроенными в одну папку структура, но для этого требуется, чтобы вы могли установить переменную среды PATH перед запуском приложения Java (например, через .bat, .cmd или средство запуска).

Если вы поместите файлы в две папки, например 64bit и 32bit, вы сможете использовать командный файл в корне вашего приложения (я предполагаю, что jaybird22.dll и jaybird22_x64.dll также находятся в этих папках):

@echo off
set PATH=%PATH%;%CD%\64bit;%CD%\32bit
java -cp .;jaybird-full-2.2.3.jar your.package.MainClass

FYI %CD% означает текущий каталог.

person Mark Rotteveel    schedule 26.06.2013