• C代码调用Java代码应用场景

    • 复用已经存在的java代码
    • c语言需要给java一些通知
    • c代码不方便实现的逻辑(界面)
  • 反射

    //1.加载类字节码
    Class clazz = Demo.class.getClassLoader().loadClass("com.example.Dialog");
    //2.获取方法
    Method method = clazz.getDeclaredMethod("showDialog",String.class);
    //3.调用方法
    method.invoke(clazz.newInstance(), "德玛西亚");
  • C代码调Java代码步骤

    //1. 加载字节码
    //jclass (*FindClass)(JNIEnv*, const char*);
    jclass clazz = (*env)->FindClass(env, "cn/loaderman/ccalljava/MainActivity");
    //2. 获取方法id
    //方法签名:唯一确定一个方法 javap -s 包名.类名
    //在bin/class目录中调用命令行
    //jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
    jmethodID methodId = (*env)->GetMethodID(env, clazz, "showDialog", "(Ljava/lang/String;)V");
    //3. 调用方法
    //void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);
    (*env)->CallVoidMethod(env, thiz, methodId, (*env)->NewStringUTF(env, "德玛西亚,人在塔在"));
     

C代码调用Java代码的更多相关文章

  1. jni中c代码调用java代码

    原理是使用反射的机制 java中反射的例子: Class<?> forName = Class.forName("com.example.ndkcallback.DataProv ...

  2. C#调用Java代码

    c#直接调用java代码,需要ikvmbin-0.44.0.5.zip.下载地址: http://pan.baidu.com/share/link?shareid=3996679697&uk= ...

  3. JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程

    JNI/NDK Java调用C/C++前言  通过第三篇文章讲解在实际的开发过程中Java层调用C/C++层的处理流程.其实我们在很大的业务里也需要C/C+ +层去调用Java层,这两层之间的相互调用 ...

  4. python 调用 java代码

    一.JPype简述 1.JPype是什么? JPype是一个能够让 python 代码方便地调用 Java 代码的工具,从而克服了 python 在某些领域(如服务器端编程)中的不足. 2.JPype ...

  5. python2.7 (x64) 调用 java 代码实践

    背景:公司实施接口自动化测试,使用的框架python+unittest:因为开发使用的架构师SpringBoot,在测试过程中难免需要使用到python调用JAVA的一些接口,所以需要用到python ...

  6. C#调用java代码(IKVMC)

    参考资料:https://blog.csdn.net/threadroc/article/details/51406587 参考1:http://www.cnblogs.com/Jack-Blog/p ...

  7. Python调用Java代码部署及初步使用

    Python调用Java代码部署: jpype下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype 下载的时候需要使用Chrome浏览器进行下载 ...

  8. python调用Java代码,完毕JBPM工作流application

    1.缘由 有一庞大Python django webproject,要引入工作流引擎,像OA一样.方便的流程控制与管理.Python或django关于工作流的开源插件,稀少,并且弱爆了,终于选用jav ...

  9. 通过JNI实现java调用C代码和C代码调用java的代码

    一.java调用C代码 1)java中需要声明调用的函数,也就是native方法,并通过System.LoadLibrary来调用dll或者so(C代码).实例代码如下: public class H ...

随机推荐

  1. 8.3.ZooKeeper集群安装配置

    1.Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式. 单机模式:Zookeeper只运行在一台服务器上,适合测试环境: 伪集群模式:就是在一台物理机上 ...

  2. OSI七层协议模型、TCP/IP四层模型

    OSI七层协议模型 TCP/IP四层模型 首先我们梳理一下每层模型的职责: 链路层:对0和1进行分组,定义数据帧,确认主机的物理地址,传输数据: 网络层:定义IP地址,确认主机所在的网络位置,并通过I ...

  3. Java语言基础(7)

    1 for循环 案例:Demo1 1+1/2+1/3+1/4+1/5+1/6+...+1/100 = ? 1/1+1/2+1/3+1/4+1/5+1/6+...+1/100 = ? 分子都是1,分母是 ...

  4. IIS无法启动解决方案

    1.第一步 2.第二步

  5. Systemd-journalctl日志管理

    Systemd 统一管理所有 Unit 的启动日志.带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志).日志的配置文件/etc/systemd/journald. ...

  6. HTML实现背景颜色的渐变

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. .NET面试题系列(二十一)C#中Equals和==的比较

    序言 值类型的比较 ; ; Console.WriteLine("Equals和= =(等于号)的比较"); Console.WriteLine("i.Equals(j) ...

  8. rander()函数执行条件

    调用this.setState({}),如果数据改变了,rander()就行执行

  9. vivo 手机 video 标签无法播放视频解决方案

    1. 针对 vivo 手机单独设置 video 标签加上 controls 此时video 可以点击播放,但是有进度条存在. 2. 将 video 隐藏,用一张图片定位在在 video 所在的位置,点 ...

  10. luoguP3371 【模板】单源最短路径

    P3371 [模板]单源最短路径 3K通过 10.7K提交 题目提供者 HansBug 标签 云端↑ 难度 普及/提高- 时空限制 1s / 128MB 题目描述 如题,给出一个有向图,请输出从某一点 ...