Run a 32bit Java app on a 64bit platform

32-bit64-bitjava

I have an old Java app which has been compiled for the 32bit platform. I've moved from Windows XP (32bit) to OS X Snow Leopard (64bit) and I'd like to continue using this app, however I'm getting an exception along the lines of:

Exception in thread "main" java.lang.UnsatisfiedLinkError: 
/Applications/TheApp/lib/libswt-pi-carbon-3139.jnilib:  no suitable image found.
Did find:
/Applications/TheApp/lib/libswt-pi-carbon-3139.jnilib: mach-o, but wrong 
architecture

I've tried using the -d32 switch when running the app from the command line but with no luck.

Is it at all possible to run this 32bit app on a 64bit platform without having to recompile or use a VM?

Edit:

I don't have the original source for this application and I'm not overly familiar with developing in Java. If there is a tool I can use to "up-compile"(?) to 64bit that would be useful!

Best Answer

Java is designed to do this kind of thing transparently. Ever heard the slogan Compile once, run everywhere? Well, it's relevant here: Compile once, debug everywhere.

The problem you are seeing is because the GUI is windows specific. The exception you see confirms this. In general, anything that uses SWT or AWT will not work correctly on a different platform unless care is taken to make sure that it does.

Long story short, you're out of luck. You could of course use JD to extract the source and modify the GUI code to run properly on OSX. Unfortunately, that would require some experience with Java.

Related Question