Hi,
I am trying to build a simple program using Java Native Interface, but
trying to execute the Java program gives me an error. I am giving the
program and the procedure that I have used here.
Code:
public class MyClass {
public static native void hello();
public static void main (String args[]) {
MyClass m=new MyClass();
m.hello();
}
static
{
System.loadLibrary("MyClass");
}
}
Then, I have compiled this program file using the command javac MyClass.java.
I have created another C program file named Hello.c, as given below:
Code:
#include "MyClass.h"
#include
#include
JNIEXPORT void JNICALL Java_MyClass_hello
(JNIEnv *env, jclass jc)
{
printf("Hello World");
}
Then, I have compiled this C program using the command:
gcc Hello.c -fPIC -I /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/include/linux/
-I /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/include/ -shared -o libMyClass.so
This compiled successfully without giving any errors. Now, I tried to
run the program, using the command:
java -cp . MyClass
Exception in thread "main" java.lang.UnsatisfiedLinkError: no MyClass
in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
at java.lang.Runtime.loadLibrary0(Runtime.java:840)
at java.lang.System.loadLibrary(System.java:1047)
at MyClass.<clinit>(MyClass.java:34)
Could not find the main class: MyClass. Program will exit.
As for the version of the compiler, and the Virtual Machine, java
-version gives me the following information:
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.1) (suse-1.1.5-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
I would be grateful if someone on this list could help me on this.
Thanks for reading this!
--
To unsubscribe, e-mail: opensuse-programming+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-programming+help@opensuse.org