linux c jni java_linux下java 调用 c jni 实现 HelloWorld

1)首先写HelloWorld的java类

class HelloWorld {

static {

System.loadLibrary("HelloWorld");

}

private native void print();

public static void main(String[] args) {

new HelloWorld().print();

}

}

2)编译 生成 .h 文件

javac HelloWorld.java

javah -jni HelloWorld

如果找不到类添加参数 -classpath ./

javah -classpath ./ -jni HelloWorld

HelloWorld.h生成如下

/

* DO NOT EDIT THIS FILE - it is machine generated */

#include

/

* Header for class HelloWorld */

#ifndef _Included_HelloWorld

#define _Included_HelloWorld

#ifdef __cplusplus

extern "C" {

#endif

/

*

* Class: HelloWorld

* Method: print

* Signature: ()V

*/

JNIEXPORT void JNICALL Java_HelloWorld_print

(JNIEnv *, jobject);

#ifdef __cplusplus

}

#endif

#endif

然后编写 HelloWorld.c 文件

#include

#include

#include "HelloWorld.h"

JNIEXPORT void JNICALL

Java_HelloWorld_print(JNIEnv *env, jobject obj)

{

printf("Hello World In C !\n");

return;

}

3)编译c文件

gcc -shared -static -lc -I/opt/jdk/jdk1.6.0_21/include -I/opt/jdk/jdk1.6.0_21/include/linux HelloWorld.c -o libHelloWorld.so

其中 libHelloWorld.so 为链接库 前缀一定是lib 而不是 HelloWorld

-I跟单是两个jdk目录下面的头文件位置

4)运行

java HelloWorld

如果找不到类添加参数 -classpath ./

java -classpath ./ HelloWorld

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值