1、创建HelloWorld.java
class HelloWorld {
public native void sayHello();
static {
System.loadLibrary("HelloWorld");
}
public static void main(String[] args) {
(new HelloWorld()).sayHello();
}
}
2、编译生成HelloWorld.class
root@meie:~/Desktop#javac HelloWorld.java
3、编译生成HelloWorld.h
root@meie:~/Desktop#javah HelloWorld
4、编译生成libHelloWorld.so(注意jdk参数指向)
root@meie:~/Desktop# gcc -shared -I /usr/lib/jvm/java-6-sun/include/ -I /usr/lib/jvm/java-6-sun/include/linux/ -I /usr/in
clude/ HelloWorld.c -o libHelloWorld.so
5、创建HelloWorld.c文件
#include "jni.h"
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_sayHello (JNIEnv *env, jobject obj) {
printf("Hello,the World!!!");
}
6、测试代码,成功
java -Djava.library.path=. HelloWorld
注意:直接用 java HelloWorld会报错
root@meie:~/Desktop# java HelloWorld
Exception in thread "main" java.lang.UnsatisfiedLinkError: no HelloWorld in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at HelloWorld.<clinit>(HelloWorld.java:6)
Could not find the main class: HelloWorld. Program will exit.
这时java文件中loadlib时找不到这个so导致的,我们这样来运行:"java -Djava.library.path=. HelloWorld",通过设置java.library.path来找到这个so。
分享到:
相关推荐
ubuntu上面使用jni例子
利用JAVAH生成C++的JNI类,使用JAR打包生成可执行包
文档里描述了如何通过jni方法在java与c++代码之间传递非基本类型数据
该资源抱哈了一个用java实现的jni的基本实例,可以运行,包含了其中的cpp文件,简单易懂,喜欢的下载!
NI调用IC卡读卡器的DLL,既支持64位程序也支持32位程序, 调用也非常方便,下面将介绍JNI调用IC卡读卡器DLL的方式
NULL 博文链接:https://407827531.iteye.com/blog/1313926
完整的展示了Java调用C++ API/dll示例程序. 说明如下: 1. mrSocketAPICInt是准备被java调用的API 2. mrSocketAPIJavaInt是java调用C++ api的中间层 3. mrSocketAPIJavaIntDemo是java程序,展示与C++ ...Java JNI教程!
Java jni调用c实例
本资源包括JAVA工程,C++工程,C#dll测试工程
如果 想用java 调用dll 这个文档 会给你帮助的
world 文档,描述了Android g1环境,C、Java、JNI调用(C调Java、Java调C)基本运算、方法调用、字符串连接的效率测试结果。
NULL 博文链接:https://zhaoningbo.iteye.com/blog/1098817
这两天要弄个JAVA调用DLL,研究了一下有点绕, java部分要生成.h头文件,所以弄了个例子在这分享下 JAVA调用DLL完整步骤 步骤里包括java部分代码及vc写的DLL代码
NDK编译 JAVA JNI 原生调用,需要的下载吧,
JAVA JNI document, call native code using JNI
在linux下,java调用c语言编译的*.so动态链接库的小例子.是一个简单计算器的例子.在java中传操作数和操作符,由C来计算,把结果传过来给java.
JNI例子学习
完整的实现java跨平台调用C程序源码,包含JAVA源码和C源码以及编译后的demo dll。将dll放到jdk bin目录下,java 项目可以直接运行。若要修改dll可以,修改C源码后重新编译生成dll。该demo处理了多线程调用c,全局...
java jni实现时的vs2010的c++代码
JNI 调用 c pp互相调用实例, java JNI cpp互相调用实例