So, if you’ve got a Java application bundle that’s built on a PowerPC Mac, the JavaApplicationStub file that’s copied into the bundle is PowerPC only. This file is copied in from
/System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/MacOS/JavaApplicationStub
On an Intel Mac, this file is a Universal binary (ie PowerPC and Intel code).
So if you build your Java app bundle on PowerPC it won’t run on an Intel Mac.
One possible solution to this problem is to copy the Universal JavaApplicationStub from an Intel Mac into your bundle, or do the build on an Intel Mac.
If your Java app uses a native C JNI library that you’ve compiled yourself, and you’re getting the error message
FATAL ERROR in native method: JNI received a class argument that is not a class
then you should try recompiling the JNI library on an Intel Mac and including it with your Bundle. If your jni library worked on PowerPC but doesn’t on Intel then you probably just need to recompile it as a Universal binary on Intel (or perhaps, with a newer development environment), no code changes necessary.
These things worked for me after a bit of experimentation, I hope they work for you and save you some time.