注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

木子月

Lixm Studio

 
 
 

日志

 
 

Linux下JNI 的简单使用  

2013-06-03 08:31:08|  分类: 程序 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1、创建一个java文件(HelloWorld.java)

01class HelloWorld { 
02        static 
03            System.loadLibrary("HelloWorld"); 
04        
05        private native void print();     
06        public static void main(String args[]) { 
07           new HelloWorld().print();     
08        
09           
10    }
 

2、使用javac命令编译该java文件,在终端输入"javac HelloWorld.java"。生成HelloWorld.class.

3、使用javah命令生成头文件。在终端输入"javah -jni HelloWorld", 生成HelloWorld.h

   

 4、使用本地方法实现头文件中的方法。

1#include <jni.h> 
2#include <stdio.h> 
3#include "HelloWorld.h" 
4    JNIEXPORT void JNICALL Java_HelloWorld_print 
5      (JNIEnv *env, jobject obj) 
6    
7            printf("HelloWorld JNI!/n"); 
8            return
9    }


5、用gcc编译生成so文件。

    gcc -shared -I /你的jdk安装路径/include -I /你的jdk安装路径/include/linux  HelloWorld.c -o libHelloWorld.so

   Linux下JNI 的简单使用 - 子月 - 向明工作室 

    解释一下: -I <dir>  的意思是HelloWorld.c中使用#include<jni.h>, gcc默认目录是"/usr/include",如果使用#include<jni.h>则找不到jni.h文件,因此要通过“-I <dir>”参数来指    定包含的头文件jni.h的位置。

6、运行。

    在终端输入java HelloWorld.

7、这时你会发现出问题了

  Linux下JNI 的简单使用 - 子月 - 向明工作室

     这时java文件中loadlib时找不到这个so导致的,我们这样来运行:"java -Djava.library.path=.  HelloWorld",通过设置java.library.path来找到这个so。

  Linux下JNI 的简单使用 - 子月 - 向明工作室

 好了,到此为止,一个简单的HelloWorld就完成

  评论这张
 
阅读(83)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017