问题标签 [jnienv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 访问 DLL 时 JNI 崩溃
我对 Java 非常陌生,但我决定要在 java 中加载我的 C++ dll。让我解释一下我在 Java 方面要做什么..
在 Java 中,我正在创建本机函数:GetGLBuffer。参数应该是指向 ByteArray 的指针。Java没有指针,所以我有点迷路了。
在 C++ 中,它相当于: GetGLBuffer(byte* &Buffer); 缓冲区从函数内部填充。
在 Java 中,我做了 GetGLBuffer(ByteBuffer Buffer); 缓冲区从 C++ DLL 中填充并发送回 Java,以便 Java 可以在 JFrame 上绘制它。相反,它会在访问 DLL 时立即崩溃。有人愿意解释我做错了什么吗?
C++ 方面:
java - 将字符串从 c jni 设置为 java
我在将字符串从 jni 设置为 java 类时遇到问题,我编写了 jni(在 c 中),我想将字符串从 jni 设置为 java 我确实喜欢这样
但是这个方法不起作用我无法从我的类中获取字符串但我可以从我的 java 类中访问所有其他方法我无法将字符串从 jni 设置为 java 确实有这样做的想法,这是我的类
xamarin.android - 在 Mono 中使用 JNI 访问 Java 库
我正在为 Android 开发一个使用 mono 的应用程序,并且一直在努力让推送通知正常工作,我正在使用 Urban Airship。
到目前为止,我已经能够调用 TakeOff() 和 EnablePush() 并且我的应用程序已成功注册,请参见以下代码:
我现在需要调用 PushManager.shared().setIntentReciever(myClass) 但我似乎无法访问 shared() 类或 setIntentReciever 方法。我尝试了各种组合来尝试访问该方法,但不断收到类/方法未找到异常。
对此的任何帮助表示赞赏!我确信它可以用一行来解决,我想我只是在语法上遗漏了一些东西。
问候
java - C ++中的JNI将文件读取到jbyteArray
我正在 UNIX 中编写一个 C++ 程序来生成一个共享库,该库将使用 JNI 在 java 中调用。这个 C++ 程序必须在 UNIX 框中读取文件,然后必须将其转换为jbyteArray
(JNI 数据类型),以便 JAVA 可以使用它。
我将 C++ 中的文件读入char*
但无法转换为jbyteArray
. 请帮忙。
代码如下::
错误如下
java-native-interface - 带有 JNI 的 C++ 应用程序引发错误“找不到 jvm.dll。重新安装应用程序可以修复....”
我在 VC6 中编写了一个普通的 C++ 应用程序,它使用 jni 来调用 java 中的方法。为此,我在项目目录中包含了 jni.h 和其他 lib 文件夹。
代码编译但是当我运行应用程序时它失败说“找不到jvm.dll。重新安装应用程序将修复它”。但是 jvm.dll 存在于我的电脑中。
如果我将应用程序的工作目录设置为 jvm.dll 所在的位置,那么它就像一个魅力。我无法将应用程序的工作目录设置为 jvm.dll 的目录,因为该应用程序将来将成为一个 dll。
我还尝试将系统变量中的 PATH 变量更新为 jvm.dll 的位置,但没有任何效果..
我怀疑 jvm.lib 正在从我的应用程序未提供的某个目录位置加载 jvm.dll .. 因此它失败了,..
请建议我出了什么问题。
提前致谢。
问候拉加文德拉
java - 在 java Swing GUI List 上显示特定的系统进程名称
我有一个通过以下方法给出的系统进程列表: public native int fetchProcessIDs(int[] pids); 公共原生字符串 getProcessName(int hProcess); 我必须在 java swing GUI 列表上显示这些进程。但我只想在该 GUI 列表上显示特定进程。例如,我只想在 gui 列表中显示名称为 chrome.exe 的系统进程。并且进程和内存状态也显示在 gui 上。如何在给定的本地方法列表中显示特定进程。请提出一些解决方案谢谢。
c - 如何从 C 中的图像目录创建视频
如何使用 c 语言从包含一组图像的目录创建视频。我想在 ac Class 文件中执行此操作(而不是在命令提示符中)。类似的东西。
我在堆栈溢出中看到了一些代码,但这都是关于运行命令行代码的。这是代码
android-ndk - 缓存 JNI 对象和线程安全(在 Android 中)
我正在使用本机线程(pthreads)编写一个 C++ 应用程序,我需要调用一些 Java 方法等。我不确定哪些 JNI 对象可以安全缓存,即存储在我的 C++ 对象中以供以后使用,可能/可能由不同的线程。我知道如果我的类的方法可以被不同的线程调用,我不能缓存 JNIEnv,而是缓存 JavaVM 并通过附加当前线程来获取 JNIEnv。但这是否也意味着我不能缓存从 JNIEnv 获得的任何东西?我需要使用通过以下 JNIEnv 方法获得的对象:
FindClass、GetMethodID、NewObject、NewGlobalRef
这些是否在线程中保持有效,或者我每次都必须获得新的?如果是后者,有没有办法在一个本机线程中创建一个对象并能够在不同的线程中访问同一个对象?
java - 调用 CallVoidMethod 时出现 NoSuchMethodError
我正在从我的 jni 类中调用一个非静态函数,但我的游戏得到了
NoSuchMethodError
我已经给出了以下功能
jni类
Java 类
谁能告诉我为什么会这样
这是我的 logcat 输出
android - JNIEnv 全局引用与 C 中的 jobject 有何不同?
到目前为止,我已经在本地保存了我的 JNI 环境和 jobject 对象。我发现要让我的 JNI 运行 ICS 和升级设备,我需要修复我的 JNI 代码。这是我得到的错误:
我对如何创建/销毁这些全局变量以及我是否做得对感到困惑。
我的应用程序目前在所有使用此代码的 pre-ICS 设备上运行良好:
在GetStaticMethodID
调用下,RelayAPI_ 变量都是指向这里的函数指针:
最后,它在这里返回我的 Java 代码:
我已将初始化更改为:
但是我对此感到非常困惑,因为它们具有相同的参数,而且没有任何意义。我在任何地方都找不到这种方法的文档,听起来很愚蠢,this tutorial
, this page
,并且the oracle docs
没有关于NewGlobalRef
方法本身的任何信息。
编辑