首页 > 代码库 > java JNI
java JNI
讲解java虚拟机以及堆和栈的:http://blog.csdn.net/cutesource/article/details/8244250
编辑helloJNI.java
class helloJNI { public native int get(); public native void set(byte c); static { //System.out.println(System.getProperty("java.library.path")); System.load("/usr/lib/helloJNI.so"); //System.out.println("loading ok"); } public static void main(String[] args) { System.out.println("ing main 1"); helloJNI test = new helloJNI(); System.out.println("ing main "); byte c = (byte)0xff; test.set(c); System.out.println("ing main 3"); System.out.println("test:" + String.valueOf(test.get())); }}
javac helloJNI.java
生成头文件:javah -jni helloJNI
编辑helloJNI.cpp
#include "helloJNI.h"int ret=0;JNIEXPORT jint JNICALL Java_helloJNI_get (JNIEnv *env, jobject jo){ return ret;}JNIEXPORT void JNICALL Java_helloJNI_set (JNIEnv *env, jobject jo, jbyte c){ unsigned char cc = c; ret = cc;}
编译:
gcc -I/usr/local/lib/jdk1.7.0_71/include/linux -I/usr/local/lib/jdk1.7.0_71/include -fPIC -shared -o helloJNI.so helloJNI.c
将 helloJNI.so 复制到/usr/lib中:
sudo cp -v helloJNI.so /usr/lib/
这里执行javah命令时与class文件在同一目录下。而如果class文件放入了包中
如:
package com.test.demo;
class TestHello{
...
}
需要建立相应的目录com/test/demo/TestHello.class
然后退出到com目录的上层目录进行:javah -jni com.test.demo.TestHello
就能够正确的生成TestHello.class的头文件了,(头文件位于当前目录下)。
jar -cvf TestHello.jar com/test/demo/TetsHello.class
------
http://blog.csdn.net/liu251/article/details/3953906
java JNI
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。