javac javah 生成JNI 错误 找不到class

翻开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 呢,统一编码果然是个世界难题!!!
我的愿望是,世界和平!!!

猜你喜欢

转载自blog.csdn.net/touxiong/article/details/78549414