我能否使用64位JRE运行使用32位JDK开发的Java程序?该应用程序使用32位非Java系统库。

9
我正在使用64位的eclipse在64位的Windows 7系统上开发Java应用程序。由于该应用程序使用Jpcap,而该库无法与64位JDK编译,因此我被迫使用32位JDK(1.7.0)。
通常使用任何JDK开发的Java应用程序都必须跨越32位和64位系统。但是,除了一个jar文件外,Jpcap还安装了系统库(.dll/.so),这些库又是WinPcap和libpcap的包装器。因此,对Jpcap的调用是对这些库的嵌套调用。
问题是:假设用户已安装所需的x86库(jpcap.dll/.so、WinPcap、libpcap),应用程序可执行文件是否能在64位平台上工作?因为Windows库的64位版本不存在。
2个回答

7
应用程序可执行文件会在64位平台上运行吗?假设用户已安装所需的x86库(jpcap.dll/.so、WinPcap、libpcap),因为windows库没有64位版本。
您需要使用32位JRE来运行应用程序。64位Hotspot JRE不能使用32位本地库。
但是反过来也一样,如果您配置Eclipse以启动32位JRE进行涉及本地库的任何测试,则无论您使用64位还是32位Eclipse进行开发和构建都没有关系。
并且要明确的是,您可以在64位操作系统平台上运行32位JRE,但反之则不行。
更新-显然,jpcap.dll可以构建为64位Windows版-请参见此帖子:https://groups.google.com/forum/?fromgroups=#!topic/jpcap/-vxZv0eAcp4

嗨,感谢您的回答! 我需要要求用户安装32位JRE吗?还是64位JRE可以直接运行应用程序? - schinoy
我发现了一个x86-64 winPcap的alpha版本,但是由于我的应用程序将部署在企业环境中,所以我无法使用它。64位Windows可以托管和运行32位winPcap。我认为我的问题归结为让用户安装32位JRE,因为大多数预期的用户使用64位操作系统。 - schinoy
1
如果您无法获取64位dll,则只能安装(或让用户安装)32位JRE。 - Stephen C

1

从记忆来看(可能有点模糊),我的答案是不行。

原生库(至少在Windows下)需要在与JVM相同的位数兼容性内执行。

因此,为了能够加载您的x32位库,您应该在x32位进程(或x32位JVM)中运行。


StephenC指出Windows有64位版本。 - MadProgrammer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接