4. 实例:
以下是一个使用KNI扩展KVM的例子。
4.1 从http://www.sun.com/software/communitysource/j2me/cldc/download.xml下载KVM源程序;
4.2 java类库源代码放在j2me_cldc/api/src,在其中增加类rayman.test.KNITest,源文件如下:
/* rayman/test/KNITest.java */
package rayman.test;
public class KNITest {
public void println(String s) {
System.out.println(s);
}
public static native int nativeTest(int i, int j);
}
4.3 部分C层源文件放在j2me_cldc/kvm/VmCommon/src,新建文件nativeTest.c:
/* nativeTest.c */
#include <kni.h>
#include <stdio.h>
KNIEXPORT KNI_RETURNTYPE_INT Java_rayman_test_KNITest_nativeTest() {
jint i1 = KNI_GetParameterAsInt(1);
jint i2 = KNI_GetParameterAsInt(2);
printf("in function Java_rayman_test_KNITest_nativeTest() ");
KNI_ReturnInt(i1+i2);
}
4.4 在j2me_cldc/kvm/VmUnix/build/Makefile中加入nativeTest.c.
4.5 在j2me_cldc/build/linux下执行make USE_KNI=true,编译好的可执行文件kvm就在j2me_cldc/kvm/VmUnix/build下。
4.6 编写测试类Hello:
/* Hello.java */
import rayman.test.*;
public class Hello {
public static void main(String [] args) {
KNITest t=new KNITest();
t.println("Hello KVM ! " + t.nativeTest(1,2));
}
}
设置好classpath并执行,得到如期结果!
另外,在KNIspec.pdf文档中有很多例子可供参考。
上一页 [1] [2] [3] [4]

【责编:Peng】