C
clusardi2k
On Windows 7, I am trying to use the JNI (Java Native Interface) to invoke a C++ method from java NetBeans 7.1.2 (Java SE Development Kit 7u4 x86 32-bit).
Background: I was given two dot jar files (produced using the NetBeans JNI process) to use in a project. The filenames of these two JNI produced filesbegin with "java".
My simple project consists of another dot java file. I'm, basically, just converting a working C++ project to a java project.
Below, I first import the JNI C++ class described via the associated jar file(s). The import information came from the JavaBeans "Projects" window listing above all the available JNI class names.
import com.one.two.three.My_Class;
//import com.six.seven.eight.*;
Second, in a java program constructor, I invoke the following static method:
My_Class.a_first_test();
(I know the above method is static because the similar C++ program runs perfectly.)
Problem Description: This java project compiles. But when I run the program, I receive the below error message.
run:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: com.one.two.three.four.five_init()V
at com.one.two.three.four.five_init(Native Method)
at com.one.two.three.four.<clinit>(four.java:4746)
at com.one.two.three.My_Class.a_first_test(My_Class.java:51)
at My_Prj.<init>(My_Project.java:28)
at My_Prj$11.run(My_Project.java:585)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
at java.awt.EventQueue.access$000(EventQueue.java:102)
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread..java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread..java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
My employeer told me I should not make public identifier names etc, so (above) I have carefully renamed code identifiers.
------
Here are the steps that I followed to try to fix the problem. These steps did not work!
(0) FYI: The contents of the jar files match (viewed via command jar tf jar-file) what is displayed by NetBeans.
(1) To gather information, I put the following line of code as the first line in the constructor:
System.out.println(System.getProperty("java.library.path"));
I ran this program. The line of code gave me paths to folders such as:
C:\Program Files\Java\jdk1.7.0_04\bin;
C:\Windows\Sun\Java\bin;
C:\Windows\system32;
C:\Windows;
C:\Program Files\QuickTime\QTSystem\;
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;
C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;
C:\Program Files\Microsoft SQL Server\90\Tools\binn\;.
(2) Since there was also a beansbinding-1.2.1.jar (and associated dot dll file) file in my project, I looked for two dot dll files that correspond to the two dot jar files given to me. I found none that had "java" pre-appended to the filenames, but I found two without "java" pre-appended to the filenames. So, I just copied and renamed the two files that I found and put them in one of the folders produced from step 1.
(3) Because of the beansbinding-1.2.1.jar file in my project, I copied my two dot jar files to the same folder. I did not rename any of the dot jar files.
(4) I compiled and ran the project in NetBeans, but I received the exact same error message.
------
Some References:
Error message:
http://stackoverflow.com/questions/...ue-0-java-lang-unsatisfiedlinkerror-no-jnotif
Setting environment variable CLASSPATH required:
http://www.webdeveloper.com/forum/archive/index.php/t-60643.html
Thank you,
Background: I was given two dot jar files (produced using the NetBeans JNI process) to use in a project. The filenames of these two JNI produced filesbegin with "java".
My simple project consists of another dot java file. I'm, basically, just converting a working C++ project to a java project.
Below, I first import the JNI C++ class described via the associated jar file(s). The import information came from the JavaBeans "Projects" window listing above all the available JNI class names.
import com.one.two.three.My_Class;
//import com.six.seven.eight.*;
Second, in a java program constructor, I invoke the following static method:
My_Class.a_first_test();
(I know the above method is static because the similar C++ program runs perfectly.)
Problem Description: This java project compiles. But when I run the program, I receive the below error message.
run:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: com.one.two.three.four.five_init()V
at com.one.two.three.four.five_init(Native Method)
at com.one.two.three.four.<clinit>(four.java:4746)
at com.one.two.three.My_Class.a_first_test(My_Class.java:51)
at My_Prj.<init>(My_Project.java:28)
at My_Prj$11.run(My_Project.java:585)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)
at java.awt.EventQueue.access$000(EventQueue.java:102)
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread..java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread..java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
My employeer told me I should not make public identifier names etc, so (above) I have carefully renamed code identifiers.
------
Here are the steps that I followed to try to fix the problem. These steps did not work!
(0) FYI: The contents of the jar files match (viewed via command jar tf jar-file) what is displayed by NetBeans.
(1) To gather information, I put the following line of code as the first line in the constructor:
System.out.println(System.getProperty("java.library.path"));
I ran this program. The line of code gave me paths to folders such as:
C:\Program Files\Java\jdk1.7.0_04\bin;
C:\Windows\Sun\Java\bin;
C:\Windows\system32;
C:\Windows;
C:\Program Files\QuickTime\QTSystem\;
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;
C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;
C:\Program Files\Microsoft SQL Server\90\Tools\binn\;.
(2) Since there was also a beansbinding-1.2.1.jar (and associated dot dll file) file in my project, I looked for two dot dll files that correspond to the two dot jar files given to me. I found none that had "java" pre-appended to the filenames, but I found two without "java" pre-appended to the filenames. So, I just copied and renamed the two files that I found and put them in one of the folders produced from step 1.
(3) Because of the beansbinding-1.2.1.jar file in my project, I copied my two dot jar files to the same folder. I did not rename any of the dot jar files.
(4) I compiled and ran the project in NetBeans, but I received the exact same error message.
------
Some References:
Error message:
http://stackoverflow.com/questions/...ue-0-java-lang-unsatisfiedlinkerror-no-jnotif
Setting environment variable CLASSPATH required:
http://www.webdeveloper.com/forum/archive/index.php/t-60643.html
Thank you,