javavm在powerdesigner 中出现Could not Initialize JavaVM! 应该怎么解决

javavm  时间:2021-06-08  阅读:()

JNIEnv和JavaVM的区别

Java和Android中JavaVM对象有区别 在java里,每一个process可以产生多个java vm对象,但是在android上,每一个process只有一个Dalvik虚拟机对象,也就是在android进程中是通过有且只有一个虚拟器对象来服务所有java和c/c++代码。

Java 的dex字节码和c/c++的*.so同时运行Dalvik虚拟机之内,共同使用一个进程空间。

之所以可以相互调用,也是因为有Dalvik虚拟机。

当java 代码需要c/c++代码时,在Dalvik虚拟机加载进*.so库时,会先调用JNI_Onload(),此时就会把JAVA VM对象的指针存储于c层jni组件的全局环境中,在Java层调用C层的本地函数时,调用c本地函数的线程必然通过Dalvik虚拟机来调用c层的本地函数,此时,Dalvik虚拟机会为本地的C组件实例化一个JNIEnv指针,该指针指向Dalvik虚拟机的具体的函数列表,当JNI的c组件调用Java层的方法或者属性时,需要通过JNIEnv指针来进行调用。

当本地c/c++想获得当前线程所要使用的JNIEnv时,可以使用Dalvik虚拟机对象的JavaVM* jvm->GetEnv()返回当前线程所在的JNIEnv*。

如何得到JavaVM,JNIEnv接口

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封装成一个函数。

buffer size是什么意思

buffer size 缓冲区大小 双语对照 词典结果: buffer size [英][?b?f? saiz][美][?b?f? sa?z] 缓冲区大小; ----------------------------------- 如有疑问欢迎追问! 满意请点击右上方【选为满意回答】按钮

services.exe占用CPU过高

本人也遇到类似问题,根据网上各家解答,好几天都无法解决,当然也不是病毒问题和某些杀毒软件问题,后来偶然发现,取消TWCU.EXE进场,居然使得services.exe占用率下来了。

TWCU.EXE是一个无线客户端应用软件,能方便用户配置无线网卡的工具,如果你的无线网卡很正常,就卸载这个工具吧!但估计services.exe占用率问题会有多种原因引起的,需要自己再慢慢测试!

jni是什么

JNI是Java Native Interface的缩写,中文为JAVA本地调用。

从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。

JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了

在powerdesigner 中出现Could not Initialize JavaVM! 应该怎么解决

在网上找了很多资料,试了很多方法,终于找到解决的方法了: 1、首先要安装32位的Mysqlodbc,下载下来mysql-connector-odbc-5.2.2-win32.msi并安装 网址: /downloads/connector/odbc/ ; (MySQL的官网下载地址) 2、安装完成之后进入控制面板 打开 管理工具 接着打开 数据源(ODBC) 点击 添加 点击 Test 进行测试,如果弹出essful说明连接成功 3、启动PowerDesigner File——>New 4、选择 Database——>ConfigureConnections...

RackNerd :美国大硬盘服务器促销/洛杉矶multacom数据中心/双路e5-2640v2/64G内存/256G SSD+160T SAS/$389/月

大硬盘服务器、存储服务器、Chia矿机。RackNerd,2019年末成立的商家,主要提供各类KVM VPS主机、独立服务器和站群服务器等。当前RackNerd正在促销旗下几款美国大硬盘服务器,位于洛杉矶multacom数据中心,亚洲优化线路,非常适合存储、数据备份等应用场景,双路e5-2640v2,64G内存,56G SSD系统盘,160T SAS数据盘,流量是每月200T,1Gbps带宽,配5...

天上云:香港大带宽物理机服务器572元;20Mbps带宽!三网CN2线路

天上云服务器怎么样?天上云是国人商家,成都天上云网络科技有限公司,专注于香港、美国海外云服务器的产品,有多年的运维维护经验。世界这么大 靠谱最重,我们7*24H为您提供服务,贴心售后服务,安心、省事儿、稳定、靠谱。目前,天上云香港大带宽物理机服务器572元;20Mbps带宽!三网CN2线路,香港沙田数据中心!点击进入:天上云官方网站地址香港沙田数据中心!线路说明 :去程中国电信CN2 +中国联通+...

41云,服务器8折优惠券,200G TCP防御

41云怎么样?41云是国人主机品牌,目前经营产品有国内外云服务器、CDN(高防CDN)和物理机,其中国内外云服务器又细分小类有香港限流量VPS、香港大带宽VPS、香港弹性自选VPS、香港不限流VPS、香港BGP线路VPS、香港Cera+大带宽机器、美国超防VPS、韩国原生VPS、仁川原生VPS、日本CN2 VPS、枣庄高防VPS和金华高防VPS;物理机有美国Cera服务器、香港单程CN2服务器、香...

javavm为你推荐
扫图高清扫图是什么意思,在很多的贴吧里,都有提到一些高清扫图,是自己照杂志上的图片,然后自己再修一下吗awv如何把普通电影转换成AWV印度尼西亚国家代码印尼身份证号的编码规则是什么?(比如中国的1-6位是地址代码,7-14位是出生日期码等)熊猫烧香病毒下载熊猫烧香病毒?审计平台什么是审计工具单元测试规范如何写线程池的单元测试文本框透明word里文本框怎么透明?点心os什么是点心os?手机操作系统和手机区别么?一个是硬件一个是软件?听说炒的好火?监控插件观看远程监控时,提示需要一个插件来显示汤不热福利汤不燥热的??
域名升级访问中 大庆服务器租用 php主机租用 工信部域名备案查询 万网域名解析 万网域名管理 Hello图床 万网优惠券 debian源 国内加速器 主机合租 e蜗牛 骨干网络 坐公交投2700元 e蜗 已备案删除域名 cdn联盟 网站卫士 阿里校园 php空间购买 更多