Can I run a java program developed using 32 bit jdk with 64 bit jre? application uses 32 bit non java system libraries

StackOverflow https://stackoverflow.com/questions/13079991

  •  14-07-2021
  •  | 
  •  

質問

I am developing a java application using 64 bit eclipse on a 64 bit Windows 7 install. I'm forced to use a 32 bit JDK(1.7.0) because the application uses Jpcap, which wont compile with a 64 bit JDK.

The application has to be cross platform across 32 bit and 64 bit systems, which is normally the case with java applications developed using any JDK. But I believe the situation is slightly complicated because besides a jar, Jpcap installs system libraries (.dll/.so) which in turn are wrappers for WinPcap and libpcap. So a Jpcap call is a succession of nested invocations to these libraries.

Here's the question:

Will the application executable work on 64 bit platforms? assuming users will have the required x86 libraries installed (jpcap.dll/.so, WinPcap, libpcap) as 64 bit versions do not exist for the windows libs.

役に立ちましたか?

解決

Will the application executable work on 64 bit platforms? assuming users will have the required x86 libraries installed (jpcap.dll/.so, WinPcap, libpcap) as 64 bit versions do not exist for the windows libs.

You will need to use a 32-bit JRE to run the application. A 64-bit Hotspot JRE cannot use 32-bit native libraries.

But the flipside is that it doesn't matter if you use a 64-bit or 32-bit Eclipse for developing and building ... provided that you configure Eclipse to launch a 32-bit JRE for any testing that involves the native libraries.

And to be clear, you can run a 32-bit JRE on a 64-bit OS platform, but not the other way around.


UPDATE - apparently the jpcap.dll can be built for 64-bit Windows - see this posting: https://groups.google.com/forum/?fromgroups=#!topic/jpcap/-vxZv0eAcp4

他のヒント

From memory (and it's a little foggy) I'd so no.

Native libraries (at least under windows) need to be executed within the same bit beepthness as the JVM.

So, in order for you to be able to load your x32 bit libraries, you should be running within a x32 bit process (or x32 bit JVM)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top