草庐IT

concrypt_openjdk_jni

全部标签

java - 通过 JNI 获取 Java ByteBuffer 的指针

如何获取指向JavaByteBuffer内部数组的指针?JNIEXPORTvoidJNICALLtest(JNIEnv*env,jobjectthiso){jclasscls=env->FindClass("java/nio/ByteBuffer");jmethodIDaloc=env->GetStaticMethodID(cls,"allocateDirect","(I)Ljava/nio/ByteBuffer;");jobjectobj=env->CallStaticObjectMethod(cls,aloc,1000);}PS:我这样做是为了共享Java和C++使用的内存。

java - JNI 释放内存以避免内存泄漏

所以我有这个从我的Java程序通过JNI调用的C++程序,代码如下:JNIEXPORTjstringJNICALLJava_com_entrust_adminservices_urs_examples_authn_LdapAuthenticator2_takeInfo(JNIEnv*env,jobjectobj,jstringdomain,jstringid,jstringidca,jstringpassword){constchar*nt_domain;constchar*nt_id;constchar*nt_password;HANDLEhToken=0;boolaut=false

c++ - 对 `JNI_CreateJavaVM' linux 的 undefined reference

我正在尝试熟悉JNIAPI,但无法编译示例C++程序。这是我用来编译的命令,下面是我要编译的程序。我得到的错误是:/tmp/cczyqqyL.o:Infunction`main':/home/nc/Desktop/jni/simple/ctojava/callJava.cpp:16:undefinedreferenceto`JNI_CreateJavaVM'编译:g++-g-I/usr/lib/jvm/java-7-oracle/include/-I/usr/lib/jvm/java-7-oracle/include/linux/-L/usr/bin/java-L/usr/lib/jv

android - 如何使用 JNI 代码正确导入 Android 库?

背景我制作了一个使用JNI处理位图的小型SDK(链接here)。它只有2个项目:一个示例项目(演示SDK的用法)和SDK本身。SDK项目是一个Android项目,其中包含一些C/C++代码。问题出于某种原因,即使我创建了项目,一切都很顺利,现在我尝试获取库项目并将其导入Eclipse,然后打开我制作的CPP文件,我明白了上面有很多错误,例如:问题为什么会发生?如何正确导入项目?我可以帮助使用它的人顺利导入它吗?我试图用JNI创建一个全新的项目,只是(小心地)复制了我的库中的文件,它编译得很好,但这不是导入项目的好方法...... 最佳答案

java - JNI - 线程和 jobject 的问题

我调用了一个native程序,该程序创建了另一个线程,该线程将自身附加到JVM。现在我想访问JVM的方法,但它失败了。这是代码:////Thisisthenativefunctionthatgetscalledfirst.//itcreatesanotherthreadwhichruns,andalsocallstheprinting-methodsinmy//javaapplet.//JNIEXPORTvoidJNICALLJava_EIGC_1Applet_app_1native_native_1start(JNIEnv*jenv,jobjectjob){printAppletCo

c++ - JNI 使用多线程从 C++ 调用 Java

我正在做一个项目,我从C++代码(使用JNI)调用Java函数,但我遇到了多线程问题。我想调用Java搜索函数,每次调用我都想创建一个单独的线程。我有一个单例MainClass和嵌套的Query类。Query类继承自QThread。代码看起来像这样MainClass::MyQueryquery("");query.LaunchQuery();//functionsofQueryvoidMainClass::MyQuery::LaunchQuery()const{this->start();}voidMainClass::Query::run(){constMainClass&mainC

java - JNI、垃圾收集和指针——Java/C++ 谁应该做什么?

我们在C++中有指针的概念。现在,如果我们在C++中分配一些内存并将其作为对象引用(使用JNI)传递给Java,那么谁应该释放它以及谁将释放它。会不会1.)垃圾收集器在Java中自动执行?2.)我们需要在包装的JNI类finalize方法中显式删除指针吗?3.)或者我们应该忘记finalize(因为finalizers不可信),Java负责调用C++代码来删除对象4.)或者是否有一些方法可以直接在Java本身中释放内存(不确定Java如何解释C++指针以删除它)?这样做的最佳实践是什么,反之亦然(当我们将对象从Java传递到C++时)? 最佳答案

java - 从 JNI/C++ 代码使用 java 套接字

我有一个java应用程序,它创建一个套接字来与服务器进程对话,例如newjava.net.Socket(Stringhost,intport)。这个应用程序包含一堆遗留的c++代码,需要从该服务器吸取大量数据并进行处理。目前这是通过让native代码创建自己的套接字并连接到服务器来实现的,例如:sock=socket(AF_INET,SOCK_STREAM,0);structhostent*hp=gethostbyname(host);if(!hp){unsignedlongaddr=inet_addr(host);hp=gethostbyaddr((char*)&addr,sizeo

java - 如果调用 JNI DeleteGlobalRef(),相应的 java 对象是否会被垃圾回收?

我的意思是,如果我在C++中创建一个全局引用jobject,然后将其传递给一些Java代码,并删除调用DeleteGlobalRef(),那么底层Java对象可能会立即被垃圾回收,因此任何future已经引用该对象的Java代码可能会返回NullPointerException?具体来说,如果我有一些C++代码执行类似这个简化示例的操作:staticjobjectmyObjGlobalRef;staticJNIEnv*env=/*calltocreateaJVMandgettheJNIenv*/;jobjectReturnMyObj(){/*>*/jobjectlocalObj=env

java - OpenJDK Windows 发行版

有人知道Windows的OpenJDK发行版吗?具体来说,我正在寻找JDK832位。我找到了64位发行版:http://www.azulsystems.com/products/zulu但我真的需要32位。 最佳答案 MonkBen等人:感谢您强调ZuluOpenJDK产品。您是对的,Azul目前只有64位JDK8、7和6版OpenJDK可用于英特尔平台。对32位JDK的支持仍然是一个开放的社区请求。请查看此Zulu论坛主题以获取有关32位支持的更多详细信息https://support.azulsystems.com/hc/com