我正在尝试使用 Firebird 嵌入式服务器创建 Java 应用程序。
问题是:我希望应用程序同时运行 Java 32 位和 Java 64 位(无需客户端进行任何修改)。
要运行 Firebird,我必须将 jaybird22.dll 和 jaybird22_x64.dll 添加到应用程序主目录 - 到目前为止还可以,但在这个目录中也应该是:ib_util.dll icudt30.dll 等,它们对于不同版本的 JVM 是不同的。
这个问题有什么解决办法吗?
简短的回答是:不,你不能。
您需要在应用程序的根目录中包含嵌入 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%
表示当前目录。