jni专题提供jni的最新资讯内容,帮你更好的了解jni。
我不能得到使用JNI的两个缺点.我想更多地了解他们: >难以调试运行时错误 本地代码 > JNI代码中的错误会占用整个JVM,并且不提供任何优化恢复的机制 难以调试 >您需要一个C/C++调试器来调试本机代码.不可能轻松地从Java到C/C++代码. (虽然可以同时调试两次,但我已经用Eclipse和CDT插件完成了调试,但是这很痛苦) JNI中的错误 >本机库中的坏C/C++代码可能会导致JVM
我有一个包含遗留C代码的DLL,我通过JNI命名此DLL,但有时C代码崩溃并导致JVM终止.有没有办法避免JVM崩溃?我可以处理JNI的错误,让JVM生存吗?
我正在使用Tomcat,在停止我的Web应用程序之后,仍然引用了我的Web应用程序的classloader实例. 结果是显着的内存量(主要与静态数据相关)不会被释放.迟早会导致OutOfMemoryError. 我拿了一个堆栈,我意识到它由一个JNI global reference持有,这阻止了类加载器将是garbage collected. 我的应用程序不使用JNI.我也不使用Apache T
我有一个 Java方法来处理位图并返回一个String. 当我从JNI(VS 2010)中调用此方法时,它可以工作,但是如果我多次调用该方法, 这个过程的记忆长大直到崩溃. 使用大量内存的指令是: jbyteArray jBuff = _env->NewByteArray(b->Length); 我的代码: static jobject staticArray=0; System::String
我正在尝试在 Android Studio中为我的项目添加一个本机预构建的共享库.我正在使用gradle-experimental:0.6.0-alpha5.但是,每当我尝试将预构建的共享库添加到我的应用程序模型中时,我会收到以下错误: Error:Cause: org.gradle.api.internal.PolymorphicDomainObjectContainerConfigureDel
我可以从 java代码本身以编程方式设置 java.library.path吗? 以下不行. System.setProperty("java.library.path", "/blah"); 不,你不能.此属性是只读值.您可以在JVM启动时更改它: -Djava.library.path=your_path 如果要从特定位置加载库,则可以使用System.load(libraryPath)而不是
Java本机接口(JNI)是否受到C ABI兼容性问题的影响? 我正在开发一个Java应用程序.我想使用Java Native Interface(JNI)来调用C库中的函数.我可以访问C库的代码,我可以重建它,但我可能需要. (例如,我可以静态链接C运行时.) 我可以要求我的用户拥有JRE 6或更高版本,但是我不能要求他们有任何特定的C运行时. 一个同事指着我这个博客文章:http://www.
我有一个执行时的C代码: 加载JVM(我完全控制如何加载JVM),并使用C JNI代码调用Java方法(从加载的类). Java代码没有Main(),它实际上不是一个标准的Java应用程序.它主要是编译并压缩到Jar文件中的静态代码,代码由C模块调用. 是否可以归档由YourKit执行的Java代码(有许可证)?如果是这样,我会很高兴知道如何. 我会把它抛出来,让C的人寻找Java:Java有一个
哪个是从 Java调用本机库的最快方法? 我知道的是 > NativeCall – 我们目前使用的 > JNA – 没有使用过,但看起来很合理 > JNI – 看起来很可怕,但如果我们得到速度,我们会做的 Swig使JNI更容易. 在速度方面,我怀疑会有微妙的变化 – 我强烈建议你选择一个电话,你知道你会做很多,并对所有提供的解决方案进行基准测试.
我有一个C应用程序,它与相机通信并获取原始图像数据. 然后我在C中有一个Byte [],我想用JNI发送给 Java. 但是,我需要将原始Byte []转换为真实的文件格式(.bmp是我的第一选择). 如果我用C语言将它写入硬盘驱动器上的文件,使用BITMAPFILEINFO和BITMAPHEADERINFO,我可以很容易地做到这一点,但我不知道如何将整个格式发送到Java. 然后我考虑使用JNI
我试图找到我的 Java应用程序崩溃的原因.它实际上是由JNI调用本机库引起的JVM崩溃. 这是我在生成的hs_err_pidxxxx.log中可以看到的: # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_INT_DIVIDE_BY_ZERO (0xc0000094) at pc
我有一个 Android项目,它有本机代码.在这个原生部分,我使用OpenCV. 当我使用OpenCV 2.3.1时,一切都编译好了,但是当我试图切换到版本2.4.1时,我遇到了问题: 它编译没有任何错误,但是当我启动我的应用程序时,由于UnsatisfiedLinkError,它无法加载我的库. Cannot load library: link_image[1936]: 37 could
这是我到目前为止: 我传递一个有2个字段的对象:String和Integer作为参数 我想发送信息来处理它在C部分,这在这一点上并不重要…… 我在jstring声明中抱怨 JNIEXPORT jint JNICALL Java_Tier3_NativeMethods_totalPalletsIn( JNIEnv *env, jclass cls, jobject stat)
就像标题所说 – 如何在不破坏当前项目(包括gradle和proguard设置)的情况下向现有 Android Studio项目添加本机代码? 从现有项目中执行以下步骤: 1.修改build.gradle(模块应用程序)看起来像这样(很多变化!): apply plugin: 'com.android.model.application' model { android.
我有一个用C语言编写的JNI函数,它接受一个字节数组作为输入,对其进行分段,并将一个字节数组返回给 Java. JNIEXPORT jobjectArray JNICALL Java_class_method(JNIEnv * env,jobject o,jbyteArray dataToSegment); 在Java方面,它很简单: byte[] arg = getRandomByteArray
问题1: jstring jstrKey; for(int i=1;i<=1000;++i) { LPWSTR strKey = L"string"; jstrKey = env->NewString((jchar *)strKey, wcslen(strKey)); } env->DeleteLocalRef(jstrKey); 问题2: for(int i=1;i<=1000+
我在C中实现了一个带有std :: map的类,并使用SWIG创建了从 Java调用的接口.但是没有迭代器对象允许我遍历SWIG包装的std :: map中的条目.有谁知道如何创建迭代器? 为了能够在Java中迭代Object,它需要实现Iterable.这又需要一个名为iterator()的成员函数,它返回一个合适的Iterator实现. 从你的问题来看,你不清楚你在地图中使用了什么类型,以及你
“天下为公”     ---------------------------     《Delphi与JNI》                 此组件目的:使用JNI读取XBF文件。                 此组件用途:从XBF文件中读取用户和密码 ==Code========= xbfLibR.dpr { *****************************************
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,jni; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit;
用于二次开发企业即时通讯源码(C++/MFC),现在,做一个普通的即时通讯软件不是一件难事,网上有很多很好的这类软件的源代码可以拿来使用。今天就介绍一个我用过,觉得不错的给大家。软件叫 ANYCHAT SDK(以下简称SDK),要做一个 QQ 一样的即时通讯,很难,也没那个必要。我用这个 SDK的目的只有一个,就是供我们企业使用。 SDK 本身只有非常简单的即时通讯功能,它最大的优点就是简单稳定、