java jni
来源:互联网 发布:嗒啦咚吧一首网络歌曲 编辑:程序博客网 时间:2024/05/16 05:30
cmd下javac 错误: 编码GBK的不可映射字符
javac -encoding utf-8 文件名
javac -encoding utf-8 JavaJNI.java
javah -encoding utf-8 -classpath E:\mycode\Cripac\JniDemo\src\main\java jni.JniDemo.JavaJNI
javah 错误: 找不到 ‘XX’ 的类文件或Exception in thread “main” name: XX.class
http://blog.csdn.net/aattxx/article/details/70344448
jni
http://blog.csdn.net/zhangmingbao2016/article/details/52779096
http://blog.csdn.net/u010212643/article/details/69567391
在eclipse下,已经编译好class文件,所以无需自己编译
javah -classpath E:\mycode_scala\JniDemo\target\classes -encoding utf-8 jni.JniDemo.JavaJNI
生成的文件如下,注意,包含有包名
jni_JniDemo_JavaJNI.h 的文件内容如下:
JavaJNI.c的文件内容如下:
/*导入刚才生成的头文件*/#include "jni_JniDemo_JavaJNI.h"#include <stdio.h>/*头文件中的方法实现,直接将头文件中的方法原型复制过来加以实现即可,注意添加形参变量,*/ JNIEXPORT void JNICALL Java_jni_JniDemo_JavaJNI_printstr__ (JNIEnv *env, jobject obj) { printf("%s\n","woshiwucanjni" ); return; } JNIEXPORT void JNICALL Java_jni_JniDemo_JavaJNI_printstr__Ljava_lang_String_2 (JNIEnv *env, jobject obj, jstring string) { const char *str = (*env)->GetStringUTFChars(env, string, 0); printf("%s!\n", str); }
Makefile文件内容如下:
JavaJNI.so:JavaJNI.o gcc -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/linux" -shared -o JavaJNI.so JavaJNI.oJavaJNI.o:JavaJNI.c gcc -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/linux" -c -fPIC -o JavaJNI.o JavaJNI.c
注意,gcc前必须用Tab,可以解决如下错误
Makefile:2: *** missing separator. Stop
Exception in thread "main" java.lang.UnsatisfiedLinkError: xxx.xxx.HelloWorld.myprint()V
没有myprint方法,类库加载没有问题,就是复制.h文件的时候,复制对方法
Could not find or load main class
在命令后加上 -classpath 包的父路径
http://blog.csdn.net/shymi1991/article/details/50540214
执行的时候
System.load("/home/jun.li/monitor.test/src/native/CudaMonitor4j/Release/libCudaMonitor4j.so")java -classpath /home/vpe.cripac/projects/jun.li/JniDemo/target/classes jni.JniDemo.JavaJNI或者java -jar /home/vpe.cripac/projects/jun.li/JniDemo/target/JniDemo-0.0.1-SNAPSHOT.jar
System.loadLibrary("CudaMonitor4j");java.lang.UnsatisfiedLinkError: no CudaMonitor4j in java.library.path
java -Djava.library.path=/home/jun.li/monitor.test/lib/x64:$CLASSPATH -jar monitor.test-0.0.1-SNAPSHOT-full.jar
在执行前,要make,而且CudaMonitor4j的.so文件名是libCudaMonitor4j.so
java JNI调用C语言动态链接库(java.lang.UnsatisfiedLinkError: no yourClassName in java.library.path 异常的解决方法)
http://blog.csdn.net/pacosonswjtu/article/details/50618033
- java jni
- java JNI
- JAVA JNI
- Java JNI
- java JNI
- java jni
- Java JNI
- java JNI
- java jni
- java jni
- java jni
- 【java&&jni】jni入门篇
- JNI : Java Glossary --- JNI详解
- java-jni-04-JNI Functions
- Java: JNI完全手册
- java JNI 初记
- Java: JNI完全手册
- Java: JNI完全手册
- chrome浏览器插件管理地址
- CF#877 B. Nikita and string(思维,暴力)
- Javaweb-xml基础1(学习笔记)
- Linux内核追踪[4.11] perf ftrace
- Shiro 认证权限认证问题
- java jni
- 欢迎使用CSDN-markdown编辑器
- Oracle之三大表连接优化大全
- python基础(三)
- 路由选择原理,静态路由
- Servlet的几个关键对象
- linux网络编程之posix 线程(三):posix 匿名信号量与互斥锁 示例生产者--消费者问题
- Python SMTP 发送纯文本邮件
- thinkphp(2) foreach($arr as &$value)用法 记录一下