问题标签 [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.

0 投票
3 回答
1644 浏览

java - 这个对java方法的调用有什么问题?

我正在尝试从代码中调用 Java 方法。C 代码侦听Escape, Shift,Ctrl按键,然后调用 Java 方法来告知按下了哪个键。以下是在其中发挥作用的片段。

C 片段:

Java 片段:

当我运行程序并按下Escape键时,我在控制台上得到了这个:

我知道我以错误的方式调用 Java 函数,但我不知道我错在哪里。从输出来看,当我按下Escape键然后发生意外错误时,它满足了这种情况。

链接到日志文件

编辑:

mavroprovato回答之后,我仍然得到同样的错误。

我这样编辑:

编辑:

完整代码版本 1

完整代码版本 2

0 投票
4 回答
9131 浏览

java - Windows下JNI和C入门

我是 Java 学习新手,第一次想开始 JNI。我正在使用 Cygwin,我创建了一个扩展名为 .java (Helloworld.java) 的文件,如下所示:

然后我通过命令行()编译文件,然后通过命令javac Helloworld.java创建一个本机头文件javah –jni Helloworld 然后还通过创建一个C文件来实现:

在那之后我运行命令

在 Cygwin 的命令提示行中给出消息

如何运行以及设置执行文件的路径的程序是什么?请帮助我任何一个。谢谢。

0 投票
1 回答
2619 浏览

java - Java JNI - 返回 jintArray 时出现 EXCEPTION_ACCESS_VIOLATION

这段代码中发生了一件非常奇怪的事情

该方法实际上返回一个我可以在 Java 中处理的结果

其中 printArray 只是一个简单的

输出如下

如您所见,它返回一个结果,但之后 JM 立即崩溃并且不再执行任何行。我绝对会感谢任何帮助!谢谢!

编辑:如果我删除对 rtlsdr_get_tuner_gains 的调用,而是手动初始化增益数组,则不会观察到错误。由于此方法在 dll 中,我可以防止它以某种方式使 JNI 崩溃吗?

0 投票
1 回答
519 浏览

java-native-interface - 具有多个参数的 JNI 方法?

我是 JNI 的新手,我想将三个整数传递给下面的函数

如果我错了请纠正我

如果 (!getStaticMethodInfo(methodInfo, "pauseEffect", "(I)V"))

(I;I;I)V 或只是 (III)V

如果我的函数是 void pauseEffectJNI(unsigned int nSoundId, unsigned int number1, unsigned int number2) ??

基本上我想知道如果我想通过多个 Integer 怎么办

感谢您的帮助...这是我制作的功能...如果我错了请纠正我

0 投票
1 回答
1382 浏览

java - Android C/C++ 原生调用 Java API

Android C/C++ 原生调用 Java API 的例子很多。但是,我读过的所有这些示例都是 Android Java API 首先调用本机,然后本机通过使用传递的 JNI-ENV 调用其他 Java API。

没有通过的 JNI-ENV,C/C++ 怎么能得到呢?C/C++ 本机是否可以在没有 JNI-ENV 的情况下调用 Java API?

如果可能的话,你能举个例子或链接吗?

谢谢!

0 投票
1 回答
724 浏览

xamarin.android - 从 monodroid 应用程序中调用 JNIEnv

这是我在 monodroid 应用程序中通过 JNIEnv 访问的 Java 类

我可以通过以下语句实例化该类:

但是当我尝试创建对象来访问getSelctd()方法时:

它抛出 NoSuchMethodExist 异常...请告诉我我是否以正确的方式做这件事以及我在这里缺少什么...

0 投票
0 回答
669 浏览

java - 如何从jni中的类中检索char数组

我将类的对象从 java 传递到JNI. 我已经使用GetObjectClass.

我可以通过使用获取类中整数的值

我可以使用and获得String价值。GetObjectFieldGetStringUTFChars

我如何Char ArrayJava课堂上获得礼物JNI

0 投票
1 回答
13075 浏览

c - 保持对 JNIEnv 环境的全局引用

我将存储JNIEnv在全局中,以便稍后调用静态 java 方法。但是是否有必要存储指向 的全局指针JNIEnv,它们与任何其他 java 对象一样,或者它是不需要这个的特殊情况。

编辑

我在这里有点笨,所有将使用的方法globalEnvPointer,都在我的 init 中调用,因为 myinit实际上是我c的程序的main方法,直到程序结束才会返回。我在 c 程序中也没有使用其他线程。我认为这简化了答案。

0 投票
1 回答
819 浏览

java - Android 内存管理从原生 JNI 调用 Java 类并声明数据(用于图像转换)

我正在为希望解压缩数据块的 Android 编写本机代码。我正在从本机 JNI 函数调用 Java 方法。这个 Java 方法调用 BitmapFactory,然后尝试分配一些内存:

当程序似乎崩溃或停止或其他情况时,给我“spin on suspend”,然后在 VM 关闭之前在 logcat 中喷出很多东西。

只是为了在深入了解细节之前给出大图,我试图将压缩图像的字节数组转换为width*height*bpp未压缩的图像以返回给本机代码。我正在尝试使用 Android Java BitmapFactory 进行似乎可以正常工作的解压缩。压缩的字节块是之前加载到本机代码中的 JPG 或 PNG 图像(在我的系统中无法从磁盘读取)。

序列有点复杂,我不确定什么是相关的,所以我会全部说出来: class MyRenderer implements GLSurfaceView.Renderer方法onSurfaceCreated调用原生init(),它在MyRenderer 类中定义:

在本机代码中,这是调用的函数:

然后调用另一个本机函数char glprog_init(int dummy_variable),该函数本身调用本机 wrapper_uncompress_image_by_os(overlay_compressed_data,overlay_compressed_data_len,... 这是本机函数:

它调用了与nativeconvertImageFromNative()相同的 Java 类中的方法。 MyRendererinit()

}

到目前为止,这似乎有效,如果我取消注释writeFile()它会将所有数据正常写入我的 SD 卡。我有问题是在里面bytes2bitmap()

可以在“常规”Java 中调用该类bytes2bitmap(),但是当从本机调用的 this 调用时,它会在该int[] pixels = new int[width * height];行崩溃。

所以最后这里是导致崩溃的代码:

我还没有完成将未压缩的数据正确地传递回本机代码的部分,但我认为我应该首先解决这个问题。

我可以在本机代码中创建一个int[]数组来传递,问题是我不知道未压缩的图像大小。

在此先感谢,马克

0 投票
2 回答
1010 浏览

c# - Monodroid JNI for Java 反射调用私有方法

在 Monodroid 项目中,我需要能够调用类的私有方法。从一个相关问题的答案来看,这似乎可以通过反射在 Java 中实现:

我需要使用来自 Monodroid 的这段代码。不幸的是,java.lang.reflect在 Monodroid 中不可用。但是,有人建议我可以使用 Monodroid 项目中的 JNI 运行此代码。Xamarin 文档指出内联 JNI 是可能的,而无需绑定整个 JAR。不幸的是,进一步的文档没有说明更多关于这个主题的内容。此外,关于 JNIEnv 的文档是空白的。

看起来我需要JNIEnv.CallVoidMethod(),但我不知道该怎么做。我找不到示例或更多文档。

如何在我的 Monodroid 项目中使用,或以java.lang.reflect其他方式调用私有方法?.createPipeParcelFileDescriptor