|
|
首先安装kaffe,apt-get install kaffe kaffe-dev。
将环境变量CLASSPATH设置为.:/usr/lib/kaffe/jre/lib/rt.jar:/usr/lib/kaffe/jre/lib/tools.jar
攻略一:
1)简单一点的。
准备HelloWorld.java文件
- class HelloWorld {
- public native void displayHelloWorld();
- static {
- System.loadLibrary("hello");
- }
-
- public static void main(String[] args) {
- new HelloWorld().displayHelloWorld();
- }
- }
复制代码
使用javac命令
~#javac HelloWorld.java
得到了HelloWorld.class文件。
使用javah命令
~#javah HelloWorld
得到了HelloWorld.h文件
后面就是C语言出场的时候了,dang dangdang dang!
准备HelloWorldImp.c文件
- #include "HelloWorld.h"
- #include <stdio.h>
- JNIEXPORT void JNICALL
- Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
- {
- printf("Hello world!\n");
- return;
- }
复制代码
将它编译成动态链接库
~#gcc HelloWolrdImp.c -shared -o libhello.so
设置LD_LIBRARY_PATH为当前目录
~#export LD_LIBRARY_PATH=`pwd`
只剩下最后一步,运行HelloWorld
~#java -classpath /usr/share/kaffe/Klasses.jar:. HelloWorld
成功了,呵呵
2)复杂一点的。
//
//如要把HelloWorld.class的main和native方法放在客户文件和库文件要怎么做?
//
更改HelloWorld.java文件
- package hello;
- public class HelloWorld {
-
- static {
- System.loadLibrary("hello");
- }
-
- public native void displayHelloWorld();
- }
复制代码
编译之
javac -d . HelloWorld.java
自动会在当前目录下创建hello目录,在hello目录下有HelloWorld.class文件
让javah创建c所需头文件
javah hello.HelloWorld
在当前目录下得到了hello_HelloWorld.h文件
让我们看一下hello_HelloWorld.h文件的内容
- #include <jni.h>
- #ifndef _Included_hello_HelloWorld
- #define _Included_hello_HelloWorld
- #ifdef __cplusplus
- extern "C" {
- #endif
- JNIEXPORT void JNICALL Java_hello_HelloWorld_displayHelloWorld(JNIEnv*, jobject);
- #ifdef __cplusplus
- }
- #endif
- #endif
复制代码
创建客户文件HelloWorldClinet.java文件
- import hello.HelloWorld;
- public class HelloWorldClient{
- public static void main(String[] args) {
- new HelloWorld().displayHelloWorld();
- }
- }
复制代码
编译之
javac HelloWorldClient.java
得到HelloWorldClinet.class文件
这时候轮到主角C出场了,呵呵
- #include "hello_HelloWorld.h"
- #include <stdio.h>
- JNIEXPORT void JNICALL
- Java_hello_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
- {
- printf("Hello world!\n");
- return;
- }
复制代码
命名为HelloWorldImp.c。
编译之
gcc HelloWorldImp.c --shared -o libhello.so
重新设置LD_LIBRARY_PATH
export LD_LIBRARY_PATH=`pwd`
如此运行java HelloWorldClinet
:p 又成功了。
兄弟们,享受JAVA的方便与C的高效吧。 |
|