问题标签 [jnienv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 从 JNI 中的 jclass 获取作业
我想知道是否有办法从 jclass 中获取作业?我们可以从 JNIEnv 调用 GetObjectClass(object) 中获取 jclass,但我找不到任何地方可以从 jclass 中获取 jobject,反之亦然。在我的实现中,我使用 NewGlobalRef() 函数缓存了 jclass 实例,但是在新线程中我需要 jobject 来查找 MethodID。我没有办法得到这份工作。我最终改为缓存作业。
java - 如何释放jbyteArray?
我的本机方法有一个返回值的方法 byte[],所以我使用“NewByteArray”来分配 byte[],然后使用 return 返回 jbyteArray。我应该释放 jbyteArray 吗?以及如何释放jbyteArray?谢谢你。我是Java初学者,我的英语很差。
java - 如何通过JVMTI接口获取使用jmethod id声明方法的类
我正在使用 JVMTI 接口的 API 为 JVM 编写一个自定义调试器,我需要获取声明该方法的类名,我使用获取方法的方法 ID,error = (*jvmti)->GetMethodName(jvmti,frames[i].method,&methodName,NULL,NULL);
我正在尝试使用获取类名error = (*jvmti)->GetMethodDeclaringClass(jvmti,frames[i].method,&declaring_class_ptr);
这将返回 declaring_class_ptr 中的 jclass 引用,我的问题是如何将其转换为给出类名的字符串?
c++ - 让 buck 测试在 Buck 托管的 C++ 项目中找到 libjvm.so
我在 Buck 管理的 C++ 项目中遇到以下链接器错误:
/usr/src/hbase/hbase-native-client/buck-out/gen/core/mini-cluster-test#compile-mini-cluster-test.cc.ob19eb5e6,default/mini-cluster-test.cc.o :在函数“MiniCluster::create_vm(JavaVM_**)”中:
/usr/src/hbase/hbase-native-client/core/mini-cluster-test.cc:80:对“JNI_CreateJavaVM”的未定义引用
在 Makefile 中,我指定了以下内容但没有效果:
LDFLAGS = -lprotobuf -lzookeeper_mt -lsasl2 -lfolly -lwangle -L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server
libjvm.so 在 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server 下
有人可以给出提示吗?
谢谢
java - 为 JNI 代码转义 Java 字符串
我有一个带有 Unicode 字符的 Java 字符串文字,需要将其转换为 C 字符串文字,可以使用JNIEnv.NewString
.
unsigned short
不幸的是,上述方法需要一个指向(jchar)数组的指针。我尝试使用如下代码:
然而,这需要很多空间,不可读,并且难以维护。
有没有办法将字符串文字转换为unsigned short[]
C 中的 a,同时仍然能够使用 Java 的 UTF-16 字符?
这种转义可以以编程方式完成吗?即将a转换java.lang.String
为可以在C 源代码中使用的字符串文字。
c# - Xamarin.Android:以下方法或属性之间的调用不明确
我收到以下错误:
以下方法或属性之间的调用不明确:“Java.Interop.JavaObjectExtensions.JavaCast(Android.Runtime.IJavaObject)”和“Android.Runtime.Extensions.JavaCast(Android.Runtime.IJavaObject)”
使用此代码:
我很好奇为什么编译器认为这段代码是错误的。
crash - jvmti : jni getobjectclass 有时 getintfieldcrashes 崩溃
我正在为 java 程序编写一个 jvmti 代理。我正在尝试读取堆栈上的对象。使用在 VMinit/vmstart 事件上收到的 jnienv 指针。我成功地使用以下方法在 methodexit 事件中读取对象: get varaible (slot) from getlocalvariableentry() ;从变量签名中使用 jni 函数获取对象,使用 getlocalobject 函数获取对象的引用对象/子类。然后如果它是对象的子类;jni::getobjectclass(); 使用返回的类并获取类中的字段;使用 getclassfields(); 然后从 getfieldname() 获取字段签名;然后根据其签名为该字段调用适当的函数,例如 getintfield() 用于 int 字段。但是,一旦我在引发 methodexit 事件的函数内的 try 块中创建的对象上尝试此操作;我每次在 Getobjectclass() 都会遇到崩溃(SIGSEGV)。这是因为对象已被破坏超出范围吗?如果是这样,如何在函数退出时读取函数的 try 块中的变量值。在读取 Integer (from localvariabletableentry) 对象的作业时获得崩溃,我调用 getintfield() 为其 int 字段成员 MIN_VALUE 这是它的第一个成员。如果我只是尝试读取 Integer 类的成员“值”然后调用 getintfield()不会崩溃。这是因为我试图读取一个类的静态最终成员,即崩溃。整数类的成员 MIN_VALUE。如何解决这个问题并避免崩溃?我为其 int 字段成员 MIN_VALUE 调用 getintfield(),这是它的第一个成员。如果我只是尝试读取 Integer 类的成员“值”,那么调用 getintfield() 不会崩溃。这是因为我试图读取一个类的静态最终成员,即崩溃。整数类的成员 MIN_VALUE。如何解决这个问题并避免崩溃?我为其 int 字段成员 MIN_VALUE 调用 getintfield(),这是它的第一个成员。如果我只是尝试读取 Integer 类的成员“值”,那么调用 getintfield() 不会崩溃。这是因为我试图读取一个类的静态最终成员,即崩溃。整数类的成员 MIN_VALUE。如何解决这个问题并避免崩溃?
c++ - NDK 通过 JNIEnv (Xamarin.Android, C++) 获取 AssetManager 的实例
我正在编写一个包含本机 C++ 库的 Xamarin Android 应用程序。
该本地库包含一个应该通过资产管理器加载图像的函数。
C++
这就是我得到的。不知何故,我需要获取活动才能访问资产管理器以加载资产。调用 showImage 可以正常工作,也是clsAct
在调用 FindClass 之后设置的,所以我猜这没什么问题。
C#
如何通过 JNIEnv 访问 C++ 端的当前活动?
java - jni从c / c ++ 11返回字符串数组并在java上使用而在c ++端没有for循环?
为什么在 jni 端做一个 foo 循环,在 java 端再做一个?我不可能只返回没有 for 循环的数组吗?
android - 本地引用表溢出但使用 DeleteLocalRef
我正在分叉面包钱包并获得一个LocalReferenceTableOverflow
. 它在以下代码中
日志猫:
谢谢!