-
说明
-
功能
javah
将native
函数转换生成c
头文件和源代码.
-
C
- 可以用
C
代码(native source code)
控制对象实例. - 入参一般是
Env
环境信息(全局函数等)
,object
对象,即类的实例.
- 可以用
-
.h
中结构体- 如果存在,则对应类的结构.
struct
字段对应类的字段.
-
函数名字
Java_${package_name}_${function_name}
.
-
生成源代码
-stubs
生成,-o
则将结果汇总到一个文件.
-
JNI:Java Native Interface
- 本身不需要头文件和源代码.只需要
so
. - 但是生成出来方便开发者进行开发
JNI
风格的代码. - 默认仅仅生成头文件.
- 本身不需要头文件和源代码.只需要
-
-
格式
-
完整
javah [ options ] fully-qualified-class-name ...
-
[options]
- 可选参数.
-
fully-qualified-class-name
- 将要被转化成
c
头文件或源代码类的完整类名. ${package_name}.${class_name}
比如java.util.lang.String
.- 注意:没有
.java
后缀名. - 编译路径一般在最顶层.即包含
package_name
的目录. - 参考链接
- 将要被转化成
-
案例
- 文件:
/home/user/com/example/JavaHowTo.class
- 包:
com.example.JavaHowTo
- 编译位置:
/home/user
- 文件:
-
-
选项
-
-o output_file
- 将生成的所有头文件或源代码拼接到一个输出文件.
-o,-d
只能用一个,本身是冲突的.
-
-d directory
- 将生成的头文件和源代码输出到一个文件夹.
-d,-o
只能用一个.
-
-stubs
- 生成
C
代码.
- 生成
-
-verbose
- 输出生成文件的信息到
stdout
.
- 输出生成文件的信息到
-
-jni
- 生成
JNI
格式的函数,默认. - 所以这个选项可选.
- 生成
-
-classpath path
- 指定查找给定
class
的位置. - 不指定用环境变量
CLASSPATH
.即-classpath > CLASSPATH
path
格式是:
分割,windows
用;
分割.path
特殊,*
表示.jar|.JAR
结尾.
- 指定查找给定
-
-bootclaspath
- 加载引导类的路径.一般是
jre/lib/rt.jar
和几个其他JAR
文件。
- 加载引导类的路径.一般是
-
-force
- 总是写入,而不是存在就不生成.
-
-
参考
- oracle说明文档
详细解决方案
javah
热度:20 发布时间:2023-12-22 02:51:52.0