草庐IT

Hello-Jni

全部标签

java - 使用 JNI 从 Java 代码中检索字符串值的内存泄漏

我正在使用GetStringUTFChars使用JNI从Java代码中检索字符串的值,并使用ReleaseStringUTFChars释放该字符串。当代码在JRE1.4上运行时,没有内存泄漏,但如果相同的代码在JRE1.5或更高版本上运行,内存会增加。这是部分代码msg_id=(*env)->GetStringUTFChars(env,msgid,NULL);opcdata_set_str(opc_msg_id,OPCDATA_MSGID,msg_id);(*env)->ReleaseStringUTFChars(env,msgid,msg_id);我无法理解泄漏的原因。有人可以帮忙吗

java - ACTIVEMQ-发布者订阅者 Hello World 示例

有两个程序:订阅者和发布者...订阅者能够将消息放到主题上并且消息发送成功。当我在浏览器上检查activemq服务器时,它显示1msgenqueued。但是当我运行消费者代码时,它没有收到消息这里是生产者代码:importjavax.jms.*;importorg.apache.activemq.ActiveMQConnection;importorg.apache.activemq.ActiveMQConnectionFactory;publicclassproducer{privatestaticStringurl=ActiveMQConnection.DEFAULT_BROKER

java - 将字符串从 Java 传递到 JNI

我想将一个字符串传递给我正在编写的JNI,它必须分配给一个constchar*。下面提到的是我是如何做到的:JNI...(...,jstringjstr...){constchar*str=env->GetStringUTFChars(jstr,0);env->ReleaseStringUTFChars(str,jstr,0);}但是,如果我在分配给jstring之后printfconstchar*str与我直接在JNI中分配str值并从那里分配printf时相比,我看到的是不同的。这是正确的做法吗?或者有没有其他方法可以将java中的字符串分配给JNI中的constchar*?

java - 安卓ndk : Problem for call of Java method from c++ with jni

我尝试在AndroidNDK上工作,我的第一次测试不是很确定,我需要帮助,因为我看不出我的错误在哪里。以下代码编译没有问题,但在模拟器上运行时,程序返回SIGSEGV信号,并且logcat中没有显式写入错误。但是,会出现指示找不到Java类的警告。经过一天对这个问题的研究,一切看起来都是正确的。这是我的Java代码:JNITestActivity.javapackagecom.test.jnitest;importandroid.app.Activity;importandroid.os.Bundle;importandroid.util.Log;publicclassJNITestA

java - 是否可以在没有 JNI 的情况下使用 sun.misc.Unsafe 调用 C 函数?

一段C/C++代码可以提供一个带有函数指针数组的JNI方法。但是有没有办法直接从Java代码内部(不使用JNI或类似的)调用数组指针指向的函数堆栈?JNI不知何故做了类似的事情,所以一定有办法。JNI是如何做到的?是通过sun.misc.Unsafe吗?即使不是,我们是否可以使用一些不安全的解决方法来获取执行此操作的JVM代码?我当然不打算将其用于商业用途。我什至不是专业人士,我只是真的很喜欢编码,而且我最近一直在研究CUDA,所以我想也许我可以尝试将所有东西混合在一起,但是JNI调用的开销会破坏使用GPU加速代码的目的。 最佳答案

java - 为什么 Java 的 SSLSocket 会发送版本 2 的客户端 hello?

SSLSocket.getEnabledProtocols()方法返回以下内容:[SSLv2Hello,SSLv3,TLSv1]。事实上,当我调用connect()并打开SSL调试时,我看到使用了v2客户端hello:main,WRITE:TLSv1Handshake,length=81main,WRITE:SSLv2clienthellomessage,length=110但我发现了两个(诚然是旧的)引用资料说JSSE确实不支持SSL版本2:来自FundamentalNetworkinginJava:'SSLv2Hello'isapseudo-protocolwhichallowsJ

java - 通过 JNI 从不同的线程调用保存的 java 对象

我有一个java对象,它通过JNI调用一个C++共享对象。在C++中,我保存了对JNIEnv和jObject的引用。JavaVM*jvm;JNIEnv*myEnv;jobjectmyobj;JNIEXPORTvoidJNICALLJava_org_api_init(JNIEnv*env,jobjectjObj){myEnv=env;myobj=jObj;}我还有一个GLSurface渲染器,它最终在另一个线程GLThread上调用上面提到的C++共享对象。然后我尝试使用我最初保存的作业对象回调我的原始Java对象,但是我认为因为我在GLThread上,所以我收到以下错误。W/dalvi

java - JNI - 在 Java 和 native 代码之间传递大量数据

我正在努力实现以下目标:1)我在java端有一个代表图像的字节数组。2)我需要让我的native代码访问它。3)native代码使用GraphicsMagick解码此图像并通过调用resize创建一堆缩略图。它还计算图像的感知散列,可以是vector或unint8_t数组。4)一旦我将此数据返回到Java端,不同的线程将读取它。缩略图将通过HTTP上传到一些外部存储服务。我的问题是:1)将字节从Java传递到我的native代码的最有效方法是什么?我可以作为字节数组访问它。我看不出将它作为字节缓冲区(包装此字节数组)与此处的字节数组相比有什么特别的优势。2)将这些缩略图和感知散列返回到

java - JNI - 如何从 C++ 或 C 回调到 Java?

我有调用nativeC++/C代码的Java应用程序。C++/C代码需要回调到Java。你能给我一些例子吗? 最佳答案 有许多有效的方法可以从C/C++回调到Java。我将向您展示一种使用C的技术(易于为C++调整env),它可以相当容易地将数据从native代码传递到Java代码。此示例传递字符串(易于修改任何数据类型)。在native代码中,创建以下内容://GlobalsstaticjmethodIDmidStr;staticchar*sigStr="(Ljava/lang/String;ILjava/lang/String;

在 JNI 中使用它时出现 Javah 错误

命令:javah-jniJavaHowTo结果:error:cannotaccessJavaHowToclassfileforJavaHowTonotfoundjavadoc:error-ClassJavaHowTonotfound.Error:Noclasseswerespecifiedonthecommandline.Try-help.我已正确设置类路径,但我仍然收到此javah错误。对此的任何解决方案都会很有帮助。 最佳答案 试试javah-jnicom.example.JavaHowTocom.example是你的包。您还需