javac javah 生成JNI 错误 找不到class
程序员文章站
2022-05-23 10:11:46
...
翻开JAVA 核心技术 卷2 高级特性,才发现JNI原来是java原本就有的特性,之前一直以为是Google针对Android研发的,人丑果然还是要多读点书啊,这一套书买了两年多,今天才翻到这个,为什么会翻到这个,因为要发现写android app代码太吃力了,很多不懂,深思一下,走都没学会,就开始跑了,那么为什么要跑呢,都是老板逼的,难道你只能做一个驱动工程师么!!!
之前看android书上说可以使用javac javah 自动生成jni头文件,试验了很多次都没成功,今天照着这本java核心技术卷二 第12章 本地方法,还好成功了,一点小曲折,记录下
使用UltraEdit 新建文件
输入以下内容:
class HelloNative
{
public static native void greeting();
}
保存, 想着androidstudio中推荐使用UTF-8 就保存文件格式为utf-8
HelloNative.java
在终端中
javac HelloNative.java
出错了 奇怪了
注意那两个乱码字符,搞了这么多软件开发,特别是一个笑话
怎么生成随机数–让一个新手退出vi
虽然我一般喜欢使用vim,但这不重要,结论都是一样的,vim经常可以看见文件开始有一些乱码,文件保存的格式不对,
于是将文件HelloNative.java 另存为 默认文件格式,还是一样 想起之前eclipse中开发文件编码一般是ASCII,保存之, 终端输入 javac HelloNative.java ,欧拉,看目录果然生成了HelloNative.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: greeting
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_greeting
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
java 为什么不默认UTF-8 呢,统一编码果然是个世界难题!!!
我的愿望是,世界和平!!!