I’m having some issues with the ODEjava being deployed on a client’s machine and have been trying to define a definitive list of installation requirements. Naturally, a developer’s machine like mine has a lot of cruft on it, so knowing what libraries and dependencies exist is somewhat problematic. It’s the typical “well it works here, no idea why it doesn’t work there” issue.
One of the more problematic issues is the UnsatisfiedLinkError being generated. The interesting bit is that it is actually loading the DLL up, but when you make any call to one of the native methods, then it generates the exception. That is, System.loadLibrary() works correctly, but making a method call on any of the org.odejava.ode.Ode methods causes the ULE.
When I have encountered this form of problem before, it’s been because of a compilation incompatibility of the native code with the JDK version that the java-side library was built with. The client’s machine is JDK 1.4.2_05, and I’m running with the pre-built win32 release library. I’m wondering what JDK version the current pre-built library was generated and compiled with. Running strings over the .dll is finding the method names in there, so it’s some sort of JVM name mapping issue.
Also, is there any chance of removing all the Apache project dependencies from the library? So far, to get the code to run, I’ve had to install about 4 megs of third-party libraries, which is really annoying as eventually this is going to be heavily distributed over the net (one of the integration paths I’m working on is adding it to Xj3D, and all the extra installation issues from the apache dependencies are a major pain to deal with).