javah命令详解「建议收藏」

javah命令详解「建议收藏」概述:最近在写c++/c的一个小的项目,需要打成动态库,供java使用。就对java调用c++/c代码做了简答了解,在此做记录。jni开发第一步,就是用javah命令生成生成c\c++头文件。javah命令参数详解cmd(默认配置jdkpath)执行javah-help如下图:-d和-o这两个参数用于设置生成的C\C++头文件的指定,该两参数选项不能同时使…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

概述:

最近在写c++/c的一个小的项目,需要打成动态库,供java使用。就对java 调用c++/c代码做了简答了解,在此做记录。jni开发第一步,就是用javah命令生成生成c\c++头文件。

javah命令参数详解

cmd(默认配置jdk path) 执行javah -help 如下图:
这里写图片描述

-d 和-o
这两个参数用于设置生成的C\C++头文件的指定,该两参数选项不能同时使用,-d是为中的每个有JNI方法的java类都生成一个头文件,并存放在-d指定的目录中,-o则是生成的所有JNI方法的头文件都放在-o指定的文件中。
-jin
表示用于生成JNI风格的C\C++头文件,默认该参数就是开启的。
-classpath
 使用-classpath后JDK将不再使用CLASSPATH中的类搜索路径,如果-classpath和CLASSPATH都没有设置,则JDK使用当前路径(.)作为类搜索路径。
  推荐使用-classpath来定义JDK要搜索的类路径,而不要使用环境变量CLASSPATH的搜索路径,以减少多个项目同时使用CLASSPATH时存在的潜在冲突。例如应用1要使用a1.0.jar中的类G,应用2要使用 a2.0.jar中的类G,a2.0.jar是a1.0.jar的升级包,当a1.0.jar,a2.0.jar都在CLASSPATH中,JDK搜索到第一个包中的类G时就停止搜索,如果应用1应用2的虚拟机都从CLASSPATH中搜索,就会有一个应用得不到正确版本的类G。
-verbose
该参数,将显示javah命令搜索和装置类文件的详细过程。

例子1

新建一个含有native方法的java类:

public class HelloWorld{

    static {

        System.load("D://jni//h//hello//x64//Debug//hello.dll");//载入dll Connector.dll

        //D:\jni\h\hello\x64\Debug
    }
    public static void main(String args []){

        HelloWorld helloWord = new HelloWorld();
        helloWord.sayHello("nihao");

    }
    public  native void sayHello(String name);

}

切换到HelloWorld.java所在目录,执行javac HelloWorld.java命令 在本目录会生成HelloWorld.class文件
执行javah -o .\myjni -classpath .\ -jni HelloWorld** 会在当前目录生成名字为myjni.h头文件
执行javah -d .\jni -classpath .\ -jni HelloWorld 会在当前目录新建一个jni目录,并在jni目录生成一个HelloWorld.h头文件

这里写图片描述
注意一定是在HelloWorld.java所在目录执行以上命令

这里写图片描述
例子2:
1、D:\jni\helloWorld目录 创建src目录,并创建com\wei子目录。
2、D:\jni\helloWorld\src\com\wei创建HelloWorld.java Test.java。
HelloWorld.java

package com.wei;
public class HelloWorld { 
   

    public native String getHelloString();
}

Test.java

package com.wei;
public class Test{ 
   
    public native String TestJni();
}

3、在D:\jni\HelloWorld目录新建一个src.txt文本描述,和一个myClass空目录,打开cmd命令,并切换到D:\jni\helloWorld目录,执行 javac命令
这里写图片描述
src.txt

src\com\wei\HelloWorld.java
src\com\wei\Test.java

执行命令后会在myClass目录生成com\wei\ HelloWorld.class Test.class
这里写图片描述
4、在D:\jni\HelloWorld目录新建一个myClass.txt有关类文本描述,打开cmd命令,并切换到D:\jni\helloWorld目录,执行 javah命令
myClass.txt

com.wei.HelloWorld
com.wei.Test

这里写图片描述
执行命令后会在./jni 目录生成以上两个类的头文件。
这里写图片描述

到此我相信大家再也不会为生成jni头文件而不知所措了,下一篇我会整理一下,在android studio上生成头文件的方法。

希望对您有所帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189698.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ssm/php/java/net/python中小学生视频在线网站「建议收藏」

    本系统带文档lw1万字+答辩PPT+查重如果这个题目不合适,可以去我上传的资源里面找题目,找不到的话,评论留下题目,或者站内私信我,有时间看到机会给你发系统设计.1系统体系结构中小学生视频在线网站的结构图-1所示:图-1系统结构登录系统结构图,如图-2所示:图-2登录结构图管理员结构图,如图-3所示。图-3管理员结构图.2开发流程设计系统流程的分析是通过调查系统所涉及问题的识别、可行性、可操作性、系统分析处理能力等具体环节来调节、整理系统的设计方案以确保系统能达到理

    2022年4月7日
    64
  • INTERLLij IDEA 修改背景颜色护眼[通俗易懂]

    INTERLLij IDEA 修改背景颜色护眼[通俗易懂]IDEA的默认颜色为黑色,确实很酷,第一眼就被它的界面所惊艳到了!不过软件的默认字体太小,对于我这个有着500多度近视的人来说简直痛苦,特地整理了一些修改背景颜色的方法,供大家参考。1.IntelliJIDEA设置菜单栏字体:File—Setting—Appearance&Behavior—Appearance—Overridedefaul…

    2022年6月20日
    69
  • 过滤器和拦截器的区别和执行顺序图_压缩空气过滤器安装顺序

    过滤器和拦截器的区别和执行顺序图_压缩空气过滤器安装顺序一、两者的区别1、拦截器java里的拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。在AOP(Aspect-OrientedProgramming)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作…

    2022年8月23日
    3
  • mysql usegeneratedkeys_Mybatis Generator insert useGeneratedKeys keyProperty[通俗易懂]

    mysql usegeneratedkeys_Mybatis Generator insert useGeneratedKeys keyProperty[通俗易懂]Mybatis自动生成代码,需要用到mybatisGenerator,详见http://mybatis.github.io/generator/configreference/generatedKey.htmlinsert语句如果要返回自动生成的key值,一般会在insert里加入useGeneratedKeys属性,例如insertintosubtasks(SID,TID,RID,S…

    2022年6月26日
    36
  • delphi字符函数Copy,Pos,Quotedstr

    delphi字符函数Copy,Pos,Quotedstr———————————————————————————————-Posfunction  Returnstheindexvalueofthefirstcharacterinaspecifiedsubstringthatoccursin

    2022年10月17日
    4
  • windows下 python中报错ImportError: No module named ‘requests’

    windows下 python中报错ImportError: No module named ‘requests’

    2021年10月28日
    92

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号