问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何得到JavaVM,JNIEnv接口

发布网友 发布时间:2022-06-17 06:01

我来回答

4个回答

热心网友 时间:2022-07-07 21:20

JavaVM接口
第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。

第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。

两种情况下,都可以用全局变量,比如JavaVM* g_jvm来保存获得的指针以便在任意上下文中使用。

Android系统是利用第二种方式Invocation interface来创建JVM的。

JNIEnv接口
JNI开发最常见的错误就是滥用了JNIEnv接口。需要强调的是JNIEnv是跟线程相关的。

在native method中,JNIEnv作为第一个参数传入。那么在JNIEnv不作为参数传入的时候,该如何获得它?JNI提供了两个函数:(*jvm)->AttachCurrentThread(jvm, (void**)&env, NULL)和(*jvm)->GetEnv(jvm, (void**)&env, JNI_VERSION_1_2)。两个函数都利用JavaVM接口获得JNIEnv接口,上面已经讲到如何获得JavaVM接口。

JNI规范也说明,可以将获得JNIEnv封装成一个函数。

1
2
3
4
5
6
JNIEnv* JNU_GetEnv()
{
JNIEnv* env;
(*g_jvm)->GetEnv(g_jvm, (void**)&env, JNI_VERSION_1_2);
return env;
}

热心网友 时间:2022-07-07 21:21

Java与native code的操作有两种方式:(1)在Java中加载动态链接库(2)使用JNI Invocation inteface,在native code中创建JVM
JavaVM接口 第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。
第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。
两种情况下,都可以用全局变量,比如JavaVM* g_jvm来保存获得的指针以便在任意上下文中使用。
Android系统是利用第二种方式Invocation interface来创建JVM的。
JNIEnv接口 JNI开发最常见的错误就是滥用了JNIEnv接口。需要强调的是JNIEnv是跟线程相关的。

热心网友 时间:2022-07-07 21:21

第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。

第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。

两种情况下,都可以用全局变量,比如JavaVM* g_jvm来保存获得的指针以便在任意上下文中使用。

Android系统是利用第二种方式Invocation interface来创建JVM的。

热心网友 时间:2022-07-07 21:22

JavaVM接口
第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。
第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
不想让老婆看到我电脑里的一些东西怎么办? 桥好路由器停电后在来电老是获取lp 勒索病毒加密的文件如何恢复? TPU贴合膜多少钱 华为手机如何将输入法改为简体 肉丝炒金针菇做法 仓储冷链信息怎么申报 什么是药品冷链物流 浙江食品冷链运输多少钱 生物冷链具备什么资质 解梦 梦到飞马 梅州特色糕点有什么? 属马的水瓶座2014年运程详解? 《崩坏3》舰团怎么发展 崩坏3舰团资金获取攻略 崩坏3舰团资金怎么获得 《崩坏3》舰团成就系统奖励介绍 崩坏3怎么提高舰团bo 崩坏3舰团探索值怎么获得 崩坏学园三舰队的贡献资金怎么刷 崩坏3舰队怎么做贡献 崩坏3舰团怎么刷贡献 罗泉古镇的罗泉文化 (10内江9)内江市资中罗泉镇是有名的旅游胜地,罗泉豆腐更是驰名一方。在做豆腐时,工人首先将大豆浸泡 罗泉豆腐做菜有几种 2014年水瓶座12月运势运程马 拱手让人的意思是? 求助:应聘了广发银行总部的助理人力资源经理是做什么的?待遇怎样?有没有了解一些情况的朋友帮下我... 请问,广东发展银行内部都有什么部门?具体都是做什么的? 广发证券人力资源部电话 1972年3月l4号双鱼座2014---2015运势 全绿翡翠手镯上有少许黄翡点,影响价值吗? 手机内存已经是怎么回事 已经有两天了 是怎么回事 已经几个月了,这到底是怎么回事 这是怎么回事,已经2天了? 属狗的摩羯座2014年运势 怎么样申请 想要一些儿童小故事、童词童谣或是唐诗宋词之类的给孩子听,有哪位朋友有的话给我发一下,非常感谢! 谁有好的免费有声读物(诗歌、散文、经典诵读)下载地址? 属蛇射手座2014年阳历11运程 杨梅吃之前要怎么处理 2014年十月二十号这周射手座运势 请问can转光纤联网工具如何自动识别波特率呢? 用笔记本联网,要用到哪些必要的工具,可以不用猫吗? 1974年天蝎座女人2014年的运势 惠普pavilion系列怎么样 HP Pavilion是一个系列吗? 64年的天蝎座2014年运势 Oracle日期比较的问题,怎么比较日期,用了好多种方法都达不到效果 天蝎座猴年男生2014年9月运势