草庐IT

JNI_OnLoad

全部标签

java - 使用 long 将指针从 JNI 传递到 Java

我正在尝试将结构作为指针从JNI传递到Java,以便稍后能够将它从Java传递回JNI。我读过这个帖子:PassingpointersbetweenCandJavathroughJNI,但我没有成功。我有一个非常复杂的结构:structmyStruct_smyStruct;在Java中,我调用一个JNI函数来初始化结构并返回一个long(指向结构的指针):JNIEXPORTjlongJNICALLJava_example_ExampleJNI_getStruct(JNIEnv*jenv,jclassjcls){structmyStruct_smystruct;long*lp=(long

java - 在 Mac 上安装 rJava 时遇到问题; JNI 数据类型的问题

已解决!!请参阅下面我的解决方案,以防这个问题在未来对其他人有所帮助。错误如标题所述,它对我来说失败了。当我尝试从R内部安装install.packages('rJava')时,我收到的错误是(之前进行了一些良好的检查):checkingwhetherJNIprogramscanbecompiled...yescheckingJNIdatatypes...configure:error:OneormoreJNItypesdifferfromthecorrespondingnativetype.Youmayneedtousenon-standardcompilerflagsoradiff

java - JNI。如何从 jobject 获取 jstring 并将其转换为 char*

这是我目前所拥有的:我传递了一个具有2个字段的对象:String和Integer,作为参数我想发送信息在C部分进行处理,这在这一点上并不重要......我在jstring声明中收到投诉JNIEXPORTjintJNICALLJava_Tier3_NativeMethods_totalPalletsIn(JNIEnv*env,jclasscls,jobjectstat){jclassstaticsitcs=(*env)->GetObjectClass(env,stat);//HereItrytogetitusingtheIDjfieldIDidDate=(*env)->GetFieldI

Java JNI - 是否可以从 C++ 在 Java 中设置单个原始数组元素

基本上,我一直在执行以下操作来检索Java实例字段(在本例中为int)并将其设置为新值,如下所示:jclasscls=env->GetObjectClass(obj);jfieldIDfid=env->GetFieldID(cls,"myVariable","I");env->SetIntField(obj,fid,(jint)2012);但是,我想对javaint数组中的单个int元素执行此操作,这样:jclasscls=env->GetObjectClass(obj);jfieldIDfid=env->GetFieldID(cls,"myVariableArray","[I");P

java - 如何使用 JNI 实例化 Java 泛型?

如果我想实例化一个Date,我可以使用:jclasscls=(*env)->FindClass(env,"java/util/Date");jmethodIDctr=(*env)->GetMethodID(env,cls,"","()V");jobjectobj=(*env)->NewObject(env,cls,ctr);但是我如何实例化ArrayList? 最佳答案 同理。在VM级别,没有泛型。 关于java-如何使用JNI实例化Java泛型?,我们在StackOverflow上找到

java - JNI system.out 和 printf 行为

我正在编写一个程序,该程序使用JNI与一个简单的C程序进行交互。我创建了以下程序:publicstaticvoidmain(String[]args){Helloh=newHello();System.out.println("before");intnumber=h.sayHello();System.out.println(number);System.out.println("after");}和JNIEXPORTintJNICALLJava_Hello_sayHello(JNIEnv*env,jobjectobj){printf("HelloJNI\n");return10;}

java - 使用 JNI 从 C 调用 java 代码时发生内存泄漏

我有一个C程序,它使用JNI在java存储中存储一些对象。(在有人问之前,这里需要使用javastore,我必须用C编写一个客户端,它能够从这个store添加和检索对象)。我编写了程序并尝试添加100000个大小为1KB的对象。但是在仅添加50000个对象后,我收到“内存不足”消息(请注意,每当我无法使用NewStringUTF和NewByteArray函数分配新的字符串或字节数组时,我都会打印这些“内存不足”消息)。那时我的应用程序只使用了80MB的内存。我不明白为什么这些方法返回NULL。有什么我想念的吗。此外,即使我正在释放为java创建的字节数组和字符串,内存也会继续增加。这是

java - 在哪里可以找到 Mac OS 的 jni 头文件

我不是问我在我自己的电脑上哪里可以找到它,我是问我在哪里可以得到它。我已经完成了我的谷歌作业,但我没有在这些路径中找到标题。我的/System/Library/Java/JavaVirtualMachines/...中甚至没有Header文件夹,而且我的根目录下也没有Developer文件夹。现在我很确定我没有安装这些header,我检查了MacOS开发者网站,但我只发现了一些损坏的链接。OpenJDK或SunJDK不应该在某处为MacOS提供jni.hheader吗? 最佳答案 /Applications/Xcode.app/Co

java - 如何在 JNI 中将事件/信号从 C 发送到 Java

是否有任何机制可以通过JNI从C向Java或反之亦然发送异步事件/信号?我需要捕捉从C到Java的信号/事件。 最佳答案 这听起来有点棘手,因为JNI应该只是单向的:Java代码可以调用本地方法,当然它可以回调到Java代码中,但它本身不能启动该过程。但这并非不可能,我认为最直接的解决方案是让native调用阻塞,直到收到信号。另一种选择是编写JVMTI代理,它可以主动干扰正在运行的VM。但是,如果我们谈论的是UNIX信号,那么您可以使用非公共(public)API(因此在未来和SunVM特定的情况下无法保证)但现有的sun.mis

java - jprofiler "Hot Spot" View 是否正确说明了通过 JNI 调用的 native 代码消耗的 CPU?

我一直在使用JProfiler分析一段通过JNI调用nativeC代码的Java代码,但我从“CPUView”窗口中得到了奇怪的结果。特别是,“CallTree”选项卡上的信息告诉我调用native代码的Java方法消耗了最多的运行时间,但“HotSpots”选项卡甚至根本没有列出该方法。我还注意到org.joda.time类的类似情况,据报道它们占用了相当大的CPU部分,但并未报告为热点,我想知道这是否是因为它们花费大量时间调用原生日期转换代码。任何对此问题的见解都将不胜感激。编辑:我刚刚发现了一篇非常令人不安的学术论文,题为“EvaluatingtheAccuracyofJavaP