kveasana
asked on
JNI using Tomcat 5.5 under Mac OS X 10.4.9 on an intel mac.
Does anybody have experience with JNI with tomcat under mac os (intel)? Probably not... :-) Anyway, I thought I'd give it a shot here...
I'm doing some web-development and just switched to a macbook pro from pc. I've installed tomcat 5.5, and eclipse 3.2. The web application I'm building is using a native library written in c++, the library is compiled into a universal binary (libMyWrapper.jnilib) and works with a stand-alone java application on the same machine. When trying to load the library from tomcat i get an unsatisfied link error: java.lang.UnsatisfiedLinkE rror: no MyWrapper in java.library.path. So i printed the java.library.path to the console and put the required jnilib on all those places but it still didn't work. I've also tried to load the library using System.load() and the absolute path to the jnilib without result.
I hope anyone out there can help me!
I'm doing some web-development and just switched to a macbook pro from pc. I've installed tomcat 5.5, and eclipse 3.2. The web application I'm building is using a native library written in c++, the library is compiled into a universal binary (libMyWrapper.jnilib) and works with a stand-alone java application on the same machine. When trying to load the library from tomcat i get an unsatisfied link error: java.lang.UnsatisfiedLinkE
I hope anyone out there can help me!
ASKER
Yes, I even restarted the machine...
ASKER
It's working! Well kinda... I moved the jnilib to /usr/lib and loaded it with an absolute path using System.load("/usr/lib/libM yWrapper.j nilib");. (this only works if the jnilib is in /usr/lib and nowhere else)
The jnilib is dependent on a few other libraries, using otool i get the following output:
libMyWrapper.jnilib:
libMyWrapper.jnilib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
libxerces-c.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.4)
Even if I copy all these libraries to the java.class.path it doesn't work, could it be because of "recursive" dependency, i.e. the libSystem.B.dylib is dependent on a library outside the java.class.path?
On the other hand I added /usr/lib to the java.class.path and still it wouldn't load...
Any ideas?
The jnilib is dependent on a few other libraries, using otool i get the following output:
libMyWrapper.jnilib:
libMyWrapper.jnilib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
libxerces-c.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib
Even if I copy all these libraries to the java.class.path it doesn't work, could it be because of "recursive" dependency, i.e. the libSystem.B.dylib is dependent on a library outside the java.class.path?
On the other hand I added /usr/lib to the java.class.path and still it wouldn't load...
Any ideas?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Did you restart Tomcat after that? You need to....