javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)
【0】README
0.1) 本文旨在给出 java.lang.IllegalArgumentException 异常的原因 和 处理方法, 该异常和 javah 没有半毛钱关系 ;
0.2) 本文附带地给出了 javah 的作用 和 java 调用本地代码(如 C语言)的相关知识;
【1】intro to javah (java 调用本地代码(如C)相关)
1)重载本地方法: 如果你重载本地方法, 也就是说, 你用相同的名字提供多个本地方法, 那么你必须在名称后面附加两个下划线, 后面再加上已编码的参数类型;
2) 看个荔枝: 如果你有一个本地方法 greeting 和 本地方法 greeting(int repeat), 那么第一个称为
Java_HelloNative_greeting__, 第二个称为 Java_HelloNative_greeting_I;
3)javah程序:没有人完成这些手工操作, javah 自动生成函数名,即javah导出类的头文件; (干货——javah 的功能)
4)具体荔枝:
- 4.1)java 类 如下:
package com.corejava.chapter12;public class HelloNative
{ public static native void greeting();
}
4.2)编译该java 类:
4.3)利用 javah 自动生成函数名(javah [your package].HelloNative 会产生一个头文件 如 com_corejava_chapter12_HelloNative.h)
4.4) source code of com_corejava_chapter12_HelloNative.h at a glance
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_corejava_chapter12_HelloNative */#ifndef _Included_com_corejava_chapter12_HelloNative#define _Included_com_corejava_chapter12_HelloNative#ifdef __cplusplusextern "C" {#endif/** Class: com_corejava_chapter12_HelloNative* Method: greeting* Signature: ()V*/ JNIEXPORT void JNICALL Java_com_corejava_chapter12_HelloNative_greeting(JNIEnv *, jclass);#ifdef __cplusplus}#endif#endif
5)抛出异常原因: 编译器对文件(带有文件分隔符 和 扩展名.java 的文件)进行操作, 而java 解释器加载类(带有点(.)分隔符; for detailed spec, please visit section 4(‘将类放入包中’) in http://blog.csdn.net/pacosonswjtu/article/details/49536995
javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)相关推荐
- 用javah 导出类的头文件, 常见的错误及正确的使用方法
******************************************************************************** 用javah 导出类的头文件, 常见的 ...
- 头文件交叉定义出现--GetDocument missing storage-class or type specifiers错误的解决方法
GetDocument missing storage-class or type specifiers的解决方法 error C2143: syntax error : missing ';' be ...
- 报错java.lang.IllegalArgumentException: Result Maps collection does not contain value解决
使用mybatis报错 java.lang.IllegalArgumentException: Result Maps collection does not contain value for co ...
- C语言头文件.h互相包含所引发的一系列错误C2143之类的解决方法
本文可解决的问题: 在一个头文件.h中定义一个结构体,在另一个.h文件中使用这个结构体引发错误 C2143 语法错误: 缺少")"(在"*"的前面) (编 ...
- Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.dataformat.yaml.YAMLFactory的解决方法
idea升级到2021.2.3版本后,启动项目报如下错误: Caused by: java.lang.ClassNotFoundException:com.fasterxml.jackson.data ...
- ant 时 --java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.getFileUtils 解决方法
使用ant 时, 有可能出现java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.getFileUtils的错误 但是直接命 ...
- 针对异常java.lang.IllegalStateException onMeasure() did not set the measured dimension解决方法
针对异常java.lang.IllegalStateException onMeasure() did not set the measured dimension by calling setMea ...
- 关于java.lang.NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup问题的解决方法
在初学spring整合jdbc,mybatis,test时,通过注解开发方式获取spring容器时执行到如下语句时报错: 错误详细为: Exception in thread "main&q ...
- Word文件交换的电脑打开字体、排版变化的原因和解决方法!
方案: 有时候.我们好不easy用Word写好文档,做好排版发给别人,别人会告诉你格式怎么是乱的啊,标题.正文.页眉页脚什么的格式都变了. 想尽各种办法都没能得到解决,那么出现这样的情况的原因究竟是什 ...
最新文章
- 执行startx后Ubuntupassword正确进不去的问题
- Appium+Python3 并发启动测试设备
- linux下wifi编程(基于netlink和nl80211.h)
- Linux 常見的登錄檔檔名
- 微信小程序实现数字为四位一组间隔(仿银行卡卡号)
- 漫步数学分析六——聚点
- 隐马尔可夫模型(五)——隐马尔可夫模型的解码问题(维特比算法)
- 浏览器大战之谷歌浏览器的逆袭
- 计算机硬盘存贮量单位,硬盘存储计量单位KB、MB、GB大小换算
- 不同时区时间换算_世界时区划分时差在线查询计算_时间换算器
- 牛客寒假训练营1 K 冒险公社(线性dp)
- 使用电脑麦克风的时候发现有杂音怎么办
- Windows AMD 安装 PyTorch
- 如何查看office是否是永久激活
- 结庐在人境,而无车马喧
- 徐明星系列之徐明星创办的OK资本成为RnF金融有限公司的锚定投资者
- python携程酒店评论_python爬取携程景点评论信息
- VB.net学习笔记(六)VB.net的对象
- 我们学校有计算机房用英语怎么说,根据中英提示,完成下列各句1、他们学校有3个计算机房??......
- [渝粤教育] 山东体育学院 体育教学论 参考 资料
热门文章
- L - Who is the Champion
- 【每日一题】8月4日题目精讲—购物
- Wannafly挑战赛23F-计数【原根,矩阵树定理,拉格朗日插值】
- P3295-[SCOI2016]萌萌哒【ST表,并查集】
- CF438D-The Child and Sequence【线段树】
- P3857-[TJOI2008]彩灯【线性基】
- P2796-Facer的程序【dp】
- jzoj3170-[GDOI2013模拟4]挑选玩具【容斥,状态压缩,分治】
- P2766-最长不下降子序列问题【网络流,dp】
- P2580-于是他错误的点名开始了【Trie,字符串】