Advertisement

[java] JNI... Anyone?

Started by May 25, 2001 10:50 AM
1 comment, last by BitMaster 23 years, 8 months ago
I wanted to start out small and wrote just two classes. One with a native method, the other one with a main() function that creates an instance of the other class and calls the native method. So: Wrote the classes, compiled them, ran javah on the native class, wrote a .cpp file implementing the native method, compiled DLL, made sure DLL is in the same directory as the class files, ran classes, got something like this: java.lang.UnsatisfiedLinkError: no MsgImpl in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1312) at java.lang.Runtime.loadLibrary0(Runtime.java:749) at java.lang.System.loadLibrary(System.java:820) at ShowMessage.(ShowMessage.java:7) So I went over things again, played a bit with it, moved the System.loadLibrary statement around, copied the DLL to other places (like Windows, Windows\System and so on) but I couldn''t get the program to work. Ok, I thought, perhaps you are just making some stupid small mistake. So I went to www.bruceeckle.com and downloaded the code examples that do exactly what I want. Compiled them, built the DLL, got the same error (that one above). That''s the history of several days wrapped up tight. I already found quite some helpful things about JNI but none helped me to solve my problem and I''m becoming rather desperate. The only things I can think of right now are: * I''m using Forte to build my Java programs (I did however try to run the program from the command line - same result) * I''m using VC++ 5 to build the DLL (I''m doing it from the GUI, a lot of others seem to prefer to invoke the compiler from the command line though) Anyone got an idea what''s going on? I mean, I could understand something like "There is no in test.dll" but from what I can see he can''t even load the DLL... Thanks for your time.
If you are running from forte that might be the problem. Try running java from the command line. It seems like forte is setting some JVM options, like java.library.path, for you without you knowing it. Try adding the switch -Djava.library.path=. to your command line also. Lastly, pare down the program until you can just call System.loadLibrary w/o problems.
Advertisement
Thanks, it works now. I would have missed it because I tried command line earlier and it didn''t work then (looks like there was another bug in there then).

Anyone knows if it''s possible to make JNI and Forte work together? I already went through the options once but couldn''t find anything that looked problem related.

This topic is closed to new replies.

Advertisement