草庐IT

java - 将字符串的数组列表从 native java 返回到 JNI

ArrayListmyArraylist;publicArrayListgetData(){myArraylist=newArrayList();myArraylist.add("1267982563");myArraylist.add("2345678");myArraylist.add("5432789");returnmyArraylist;}如何在JNI端从上述方法中获取每个项目并推送到vector并从JNI返回到JNI层中的其他CPP调用。 最佳答案 将ArrayList转换为std::vector:jclassjava_

java - JNI 的用处

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我已经做了几年的Java开发人员,听说您可以使用JNI做一些非常有用和强大的事情。我不知道我是否只是不需要使用它,或者它是否与我不是很相关;但我根本不必碰它。我想知道Java这方面的用处是什么。例子会很棒。

java - JNI EnsureLocalCapacity——为什么?

在这里查看JNI文档:http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html具体的看EnsureLocalCapacity函数的描述中是怎么说的:Forbackwardcompatibility,theVMallocateslocalreferencesbeyondtheensuredcapacity.(Asadebuggingsupport,theVMmaygivetheuserwarningsthattoomanylocalreferencesarebeingcreated.IntheJD

java - 在 tomcat7 maven 插件中设置 ENV 变量

有没有办法通过tomcat7-maven-plugin设置ENV变量?这样它们就会出现在System.getenv()中?可以使用设置系统属性出现在System.getProperties()中map。我正在寻找一种类似的方式来传递环境变量。 最佳答案 这里已经回答了:SettingUserEnvironmentVariablesfortomcatonWindowsFromanadmincommandpromptdothefollowingcommand:tomcat8//US//YourServiceName++Environme

java - 在 C (JNI) 中结束 Java 线程

亲爱的多线程/Java/C/JNI大师们,我有一个稍微具体的问题。我有一个生成线程的Java程序。在run()方法中,调用C(通过JNI),首先在TLS中分配线程局部变量,然后进入event_loop(因此线程的默认生命周期由该循环决定).我现在的问题是,如果出现类似SIGSEGV的情况,如何能够关闭/终止线程。重要的是整个进程和其中的其他线程可以继续。这就是我们使用TLS分离线程的原因。(我知道,有些人不鼓励这样做,当然做防御性编程是正确的,试图提前避免这种崩溃。这段代码仅供迁移期间使用,因为我们正在从C转换到Java.但由于我们拥有的资源很少,这将需要一些时间。)classMyTh

java - 为 JDK 10 中的类文件生成 JNI 头文件

Javanative接口(interface)(JNI)的一个组成部分是通过Cheader桥接JVM代码和native代码。过去生成这些头文件的方法非常简单:只需在类文件上调用命令行实用程序javah。然后,此过程将为任何标有native修饰符的方法生成原型(prototype)。然而,从Java10开始,javah实用程序hasbeenremoved,它的建议替换是javac的新标志“-h”。如果有可用的Java源文件,替换工作正常,但在只有编译的类文件可用的情况下就不够用了。(引发这个问题的问题是我试图从Scala源代码生成JNI绑定(bind)。我目前的方法是先编译它们,然后在生

Android Java代码与JNI交互 JNI方法Java类字段 (六)

🔥AndroidStudio版本🔥   🔥Java基础类型数据对应Native层的字母🔥 通过jni查找java某个类中相应字段对应的数据类型,需要使用到jni中的GetFieldID()函数jfieldIDGetFieldID(jclassclazz,constchar*name,constchar*sig){returnfunctions->GetFieldID(this,clazz,name,sig);}*|Java|JNI|*|boolean|Z|*|byte|B|*|char|C|*|short|S|*|int|I|*|long|J|*|float|F|*|double|D|🔥Jav

java - 通过jni将jint数组从c返回到java

我在java中创建了一个整数数组,并通过jni将数组传递给cpp程序我的代码是:importjava.util.*;classSendArray{//Nativemethoddeclarationnativeint[]loadFile(int[]name);//Loadthelibrarystatic{System.loadLibrary("nativelib");}publicstaticvoidmain(Stringargs[]){intarr[]={1,2,3,4,5,6,7,8,9,10};//CreateclassinstanceSendArraymappedFile=new

java - 从 JNI/NDK 将二维原始数组从 C 返回到 Java

我找到了大量关于如何在JNI中生成二维基元数组并将其返回给Java的文档。但是这些信息无法描述如何在C中给定上下文传递一个已经存在的2Dfloat组(float**)。为了明确描述我的问题,我将添加一些我想要实现的C伪代码://Returnsa2DfloatarrayfromCtoJavajfloatArrayndk_test_getMy2DArray(JNIEnv*env,jobjectthiz,jlongcontext){//CastmycontextreferenceMyContextRefcontextRef=(MyContextRef)context;//Incasewene

java - 如何确定 JNI 全局引用内存泄漏的原因?

我正在使用Tomcat,在停止我的Web应用程序后,仍然存在对我的Web应用程序的类加载器实例的引用。结果是大量内存(主要与静态数据相关)不会被释放。这迟早会导致OutOfMemoryError。我做了一个heapdump,然后我意识到它由一个JNIglobalreference持有防止类加载器将是garbagecollected.我的应用程序不使用JNI。我也没有使用ApacheTomcatNativeLibrary。我正在使用Sun/OracleJDK。我想追查这个全局引用的原因/来源。(我的猜测是JVM内部引用了类加载器-但为什么/在哪里?)。问题:有哪些方法/工具集可以实现这一