zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    单例模式
    maven版本对应的jdk
    DateUtil
    多级反向代理java获取真实IP地址
    springcloud初次zuul超时报错com.netflix.zuul.exception.ZuulException:Forwarding error
    spring cloud-config的client中/refresh的端点报错401
    spring Cloud-eureka的保护模式
    spring cloud的配置
    spring boot部署中executable的系统服务
    登陆SQL Server 2000数据库提示超时已过期的解决方法
  • 原文地址:https://www.cnblogs.com/sunniflyer/p/4069311.html
Copyright © 2011-2022 走看看