linux下java 调用 c jni 实现 HelloWorld
来源:互联网 发布:sql语句找出相同数据 编辑:程序博客网 时间:2024/05/17 04:03
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 <jni.h>
/* Header for class HelloWorld */
#include <jni.h>
/* 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);
#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
}
#endif
#endif
然后编写 HelloWorld.c 文件
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World In C !\n");
return;
}
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
- linux下java 调用 c jni 实现 HelloWorld
- JNI简单实现Java调用C++/C的HelloWorld
- JNI简单实现Java调用C++/C的HelloWorld
- JNI简单实现Java调用C++/C的HelloWorld
- JNI进行java对c的调用之helloworld(linux下非eclipse版本)
- JAVA用JNI方法调用C代码实现HelloWorld(含windows及ubuntu两种操作系统环境下的操作)
- Linux Java jni 调用之HelloWorld
- linux java jni helloworld
- linux下 java JNI调用C语言动态链接库
- linux下 java JNI调用C语言动态链接库
- linux下 java JNI调用C语言动态链接库
- Java 通过 JNI 调用 C 之一 HelloWorld 入门
- Linux java 下JNI实现
- linux下使用jni实现c++调用java程序(3)多线程jni使用
- JNI编程中C调用Java实现。
- jni实现C语言调用Java程序
- JNI 实现java 与 c ++ 调用
- JNI实现Java调用C/C++语言
- 一个基于Wave GWT Guice 的Sns 设想
- GWT Wave 开源代码运行跑通分析(1)
- 搜索引擎的博客提交入口
- 构建富客户端程序 GWT2.3 + Guice3.0 + hibernateJPA 程序代码
- baidu vs google 不在一个等级上的
- linux下java 调用 c jni 实现 HelloWorld
- 读取 jpa 的配置文件.添加自己的属性.
- android 源文件 zip包下载.地址
- android 结合Junit进行测试.
- Android 4.0 更新后 启动不了.
- HTML5: GWT + JquyerMobile + phoneGAP 开发移动应用
- Virtual Box 下 安装 CentOs.
- CentOS rpm 安装 java 环境 tomcat nginx.
- CentOS 安装 Memcache 服务器. java 做客户端.