|
|
第 1 帖 | |
|
|
标题: Debian 下使用kaffe进行JNI的编程 SUN java JNI示例的Debian Kaffe版本
首先安装kaffe,apt-get install kaffe。 准备HelloWorld.java文件 代码:
~#javac HelloWorld.java 得到了HelloWorld.class文件。 使用javah命令 ~#javah HelloWorld 出错,提示没有设置CLASSPATH ~#export CLASSPATH=/usr/lib/kaffe/jre/lib 再次运行javah命令,提示打开对象HelloWorld失败。 ~#javah -classpath /usr/share/kaffe/Klasses.jar:. HelloWorld 得到了HelloWorld.h文件 后面就是C语言出场的时候了,dang dangdang dang! HelloWorldImp.c文件 代码:
~#gcc HelloWolrdImp.c -shared -o libhello.so 设置LD_LIBRARY_PATH为当前目录 ~#export LD_LIBRARY_PATH=`pwd` 只剩下最后一步,运行HelloWorld ~#java -classpath /usr/share/kaffe/Klasses.jar:. HelloWorld 成功了,呵呵
__________________
CPU : P4 2.0 主板 : 华擎P4VT8+ 内存 : Kinston DDR400 512MB 显卡 : 七彩虹6200A-GD2 CT超频版 声卡 : 主板集成CMI9739六声道 硬盘 : 迈拓金钻10 80GB IDE OS : Debian GNU/Linux Etch GUI :GTK based on DirectFB _______________________________ Help others by sharing your knowledge! 此帖于 05-12-14 15:40 被 realtang 编辑. |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
据说gcc自已的CNI更直观方便。
|
|
|
|
|
|
|
|
第 3 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 4 帖 | |
|
|
标题: 如果要把HelloWorld.class的main和native方法放在客户文件和库文件要怎么做?? 更改HelloWorld.java文件
代码:
javac -d . HelloWorld.java 自动会在当前目录下创建hello目录,在hello目录下有HelloWorld.class文件 让javah创建c所需头文件 javah hello/HelloWorld 在当前目录下得到了hello_HelloWorld.h文件 让我们看一下hello_HelloWorld.h文件的内容 代码:
代码:
javac HelloWorldClient.java 得到HelloWorldClinet.class文件 这时候轮到主角C出场了,呵呵 代码:
编译之 gcc HelloWorldImp.c --shared -o libhello.so 重新设置LD_LIBRARY_PATH export LD_LIBRARY_PATH=`pwd` 如此运行java HelloWorldClinet 请注意整个攻略中,应该将CLASSPATH设置为.:/usr/lib/kaffe/jre/lib/rt.jar:/usr/lib/kaffe/jre/lib/tools.jar |
|
|
|
|
|
|
|
第 5 帖 | |
|
|
想不到当年预言的java+c的编程趋势,现在在android SDK+NDK的今天得以实现。
|
|
|
|
|
|
|
|
第 6 帖 | |
|
|
~#java -classpath /usr/share/kaffe/Klasses.jar:. HelloWorld
这一行运行的应该是 HelloWorld.class 文件,所以之前的所有工作都是自歁欺人。 如果你运行的c编译出来的,我想应该使用./HelloWorld 来运行。 JNI 是为了让Java代码调用系统库,如linux下so,win下的dll等。 kaffe 十几前的东西,java 1时代的产物,java 2 开始,sun开始修改协议,以保证jvm的兼容性,这些山寨项目都夭折了。。。
__________________
Spring Live 中文版发布 Blog:http://hantsy.cublog.cn Gmail/Gtalk:hantsy@gmail.com |
|
|
|
|
|
|
|
第 7 帖 | |
|
|
现在的kaffe还可以,跑跑swing什么的没问题,就是功能少了点。主要是现在开源的兼容虚拟机都在用GNU Classpath,兼容性比以前要好一些了。
__________________
Blog: http://www.pixel-white.com Source Repo: http://github.com/Iacob |
|
|
|
|
|