我正在尝试使用Firebird嵌入式服务器创建一个Java应用程序。
问题是:我希望应用程序同时使用Java 32位和Java 64位运行(不需要客户端进行任何修改)。
要运行Firebird,我必须将jaybird22.dll和jaybird22_x64.dll添加到应用程序主目录中-到目前为止还可以,但在这个目录中也应该是:ib_util.dllicudt30.dll等这对于JVM的不同版本是不同的。
这个问题有什么解决办法吗?
简短的回答是:不,你不能。
您需要在应用程序的根目录中包含嵌入Firebird的正确位文件,并且由于嵌入的32位和64位版本的Firebird库具有相同的名称,因此不可能同时包含它们。
UPDATE
令我羞愧的是(作为Jaybird;的开发人员),我刚刚发现在一个文件夹结构中同时使用32位和64位版本的嵌入式实际上是可能的,但这需要您能够在运行Java应用程序之前设置PATH
环境变量(例如通过.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
仅供参考%CD%
表示当前目录。