Solved

JNI using Tomcat 5.5 under Mac OS X 10.4.9 on an intel mac.

Posted on 2007-03-20
6
1,041 Views
Last Modified: 2013-11-23
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.UnsatisfiedLinkError: 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!
0
Comment
Question by:kveasana
  • 2
  • 2
6 Comments
 
LVL 30

Expert Comment

by:mayankeagle
Comment Utility
>> 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.

Did you restart Tomcat after that? You need to....
0
 

Author Comment

by:kveasana
Comment Utility
Yes, I even restarted the machine...
0
 

Author Comment

by:kveasana
Comment Utility
It's working! Well kinda... I moved the jnilib to /usr/lib and loaded it with an absolute path using System.load("/usr/lib/libMyWrapper.jnilib");. (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?

0
 
LVL 30

Accepted Solution

by:
mayankeagle earned 500 total points
Comment Utility
You don't need to add it to java.class.path - you need to add it to java.library.path
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
If your site has a few sections that need to be secure when data is transmitted between the server and local computer, such as a /order/ section for ordering or /customer/ which contains customer data, etc it would of course be recommended to secure…
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now