Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1368155
  • 博文数量: 244
  • 博客积分: 3321
  • 博客等级: 中校
  • 技术积分: 2704
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-26 08:17
个人简介

微信公众号:杰夫弹弹看

文章分类

全部博文(244)

文章存档

2018年(4)

2017年(32)

2016年(25)

2015年(28)

2014年(27)

2013年(34)

2012年(25)

2011年(30)

2010年(39)

分类: Java

2012-07-24 21:55:47

使用JNI发现一个问题,
 1) wrong ELF class: ELFCLASS64)
主要是机器是64位的OS,默认编译的.so是64位

而java设置的默认是32位 JDK, 所以会出现这个问题。
那么就采用编译成32位的.so, 安装 glibc-devel.i686
然后编译指定 -m32 就可以了,

2) 如果执行出现Not found in java.library.path),这是因为JVM没有找到相应的native library,那么就需要设置相应的path
可以通过

java -Djava.library.path='.' HelloWorld

或者

LD_LIBRARY_PATH=`pwd`
export LD_LIBRARY_PATH
Java HelloWorld

这样就搞定了



JNI简单过程:
1)创建一个Java程序,定义原生的c/c++函数
2)javac编译
3)javah -jni声称.h文件
4)创建对应的.c文件,实现对应的.h定义的函数
5)编译.c 生成.so
6) 运行java程序


参考:

http://www.cnblogs.com/xiaoxiaoboke/archive/2012/02/13/2349775.html
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html#examp
http://blog.csdn.net/mdemonhunter/article/details/6254478

阅读(4003) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~