最近在用JNI,有Windows下,有Unix下,遇到了不少问题,请大家一起来讨论一下啊。 我在做一个Unix下进程监控的小程序,用JAVA写,需要调用C写的Unix下的与进程相关的函数,首先写一个java程序,用javac编译后用javah产生.c文件,然后写了一个cpp文件,编译以后,产生了一个Proc.so文件,类似于Windows下的dll文件,然后用另一个java程序进行调用,但是这时候会抛出一个异常,提示为: no Proc.so in java library path 我将Proc.so文件复制到了/usr/java/include和/usr/java/lib目录下,这两个目录是jdk的目录,但是还是会抛出以上的异常。 请问需要怎样设置,有高手做过unix下的jni编程吗
我在做一个Unix下进程监控的小程序,用JAVA写,需要调用C写的Unix下的与进程相关的函数,首先写一个java程序,用javac编译后用javah产生.c文件,然后写了一个cpp文件,编译以后,产生了一个Proc.so文件,类似于Windows下的dll文件,然后用另一个java程序进行调用,但是这时候会抛出一个异常,提示为:
no Proc.so in java library path
我将Proc.so文件复制到了/usr/java/include和/usr/java/lib目录下,这两个目录是jdk的目录,但是还是会抛出以上的异常。
请问需要怎样设置,有高手做过unix下的jni编程吗
jmethodID ExaDO_init = env->GetMethodID(ExaDOclz, "<init>", "()V");
jobject ExaDO = env->NewObject(ExaDOclz,ExaDO_init);
不过你的类全部是Private的,怎么赋值啊!可以写一个方法来专门赋值,像上面这样先GetMethodID获得,再
env->CallVoidMethod(ExaDO , ExaDO_setValue, env->NewStringUTF("Name"));
就可以了