我有一个使用第三方jar(utils.jar)的应用程序,它调用第三方DLL(utils.dll)。 jar文件管理对DLL的调用,包括DLL的名称。有一个32位版本和64位版本的DLL。
目前,该应用程序只能在32位计算机上运行。当我尝试在64位计算机上运行它时,它会告诉我
Can't load IA 32-bit .dll on a AMD 64-bit platform
当我用64位替换32位dll时,它工作正常。如果可以避免它,我不想维护两个单独的版本(一个使用32位库,另一个使用64位库)。有没有办法构建应用程序,以便它可以确定需要使用哪个版本的库?
我们的项目是使用Ant构建的,但我可以在必要时探索其他替代方案。
答案 0 :(得分:2)
您必须创建一个额外的ant目标,以便它始终构建应用程序的x32和x64变体。
我不想保留两个单独的版本
如果蚂蚁你的skript总是产生两个额外的努力。
答案 1 :(得分:1)
当你执行loadLibary时,可以使用System.getProperty("os.arch")
编写库名。因此,您捆绑所有dll,并在运行时选择相关版本。
答案 2 :(得分:1)
对于部署Java桌面应用程序,最好的选择通常是安装应用程序。使用Java Web Start 1 。 JWS适用于Windows,OS X& * nix中。
JWS提供了许多吸引人的功能,包括但不限于启动屏幕,桌面集成,文件关联,自动更新(包括延迟下载和程序控制更新),本地分区和&按平台,架构或Java版本下载其他资源,运行时环境配置(最低J2SE版本,运行时选项,RAM等),使用扩展轻松管理公共资源..