jni相关内容

何时以及如何释放NIO直接缓冲区?

我有一个C库,需要临时缓冲区用于临时空间。我正在考虑将直接字节缓冲区的地址传递给它。 是否允许VM在最终释放之前重新定位缓冲区? 在JNI帧消失后,本机库将保持指针。我的理解是无法缓存JNI本地对象引用,因为VM可能在GC期间重定位它们。这是否适用于缓冲区地址? 我知道如果我在Java中分配缓冲区然后让缓冲区对象熄灭,VM将释放缓冲区内存范围。如果我使用NewDirectByteBu ..
发布时间:2018-12-29 19:17:57 Java开发

即使类与META-INF / services位于同一JAR文件中,服务加载程序也找不到服务提供程序类

我正在成功运行一个C ++应用程序,该应用程序使用JAR文件作为类路径参数加载JVM。然后,应用程序成功使用JNI调用来执行此JAR文件中.class文件中定义的各种函数。 包含在.jar文件的目录结构中的是第三方集.class文件 - 从jai_imageio.jar合并的文件(这些.class文件及其完整目录结构,使用Intellij IDEA合并到此单个.jar文件中)。合并的.jar ..
发布时间:2018-12-28 22:48:14 Java开发

是否可以在Java中加载相同DLL的不同版本?

我有一个与一组第三方库交互的JNI库,系统上可能有多个版本的第三方库。对于第三方库的每个版本,出于可比性原因,我必须重新编译JNI代码。现在我通过加载具有特定名称的DLL来处理这个问题,如果版本更改,我更改了JNI接口DLL的名称,以便正确的版本具有正确的名称来加载。 我希望能够根据用户想要使用的版本动态加载dll。如果我在具有不同名称但具有相同方法签名的DLL上调用System.loadL ..
发布时间:2018-12-28 22:46:57 Java开发

JNI的用处

我已经成为一名Java开发人员已有几年了,并且听说过你可以用JNI做一些非常有用和强大的东西。我不知道我是不是需要使用它,或者它与我的关系不是很相关;但我根本没有碰过它。 我想知道Java这方面的用处是什么。例子很棒。 解决方案 这非常有用。我可以看到使用JNI的两个主要原因(可能更多)。 性能。如果您有一段代码,其中Java Runtime无论出于何种原因都无法降低性能。您可 ..
发布时间:2018-12-28 21:50:27 Java开发

C ++ std :: string到jstring,长度固定

我正在尝试将C ++ std :: string转换为jstring并返回它。这很容易 JNIEnv * - > NewStringUTF(stdString.c_str()) 但问题是我正在转换的字符串几乎随机散布了空字符。这是 c_str()的问题,但不是 std :: string 。 NewStringUTF 只会捕获完整 std :: string 的一部分。 ..
发布时间:2018-12-28 21:37:06 Java开发

Jni FindClass返回NULL

我在头文件中得到了c ++结构, struct StatusLine { static jclass Class; // Lorg / apache / http / StatusLine; static jmethodID GetStatusCode; //()I }; struct ByteArrayOutputStream { static jclass C ..
发布时间:2018-12-28 16:14:17 Java开发

无法在Java / C ++中为外部应用程序设置always-on-top

我正在寻找使外部应用程序(不是像notepad或calc.exe这样的Windows应用程序)的解决方案,以便在按下Java GUI中的按钮后始终保持在顶部。 我在C ++中使用这段代码来获取桌面上所有打开的窗口,并将它们的进程ID(PID)与发送的PID(来自我的Java应用程序)相匹配: #include“cjni.h” #include #include ..
发布时间:2018-12-28 15:53:24 Java开发

在多个jni调用中保持某种c ++对象的存活

我的java代码将调用存在的c ++代码来解析文件。它会生成一个保存很多数据的对象。 我将调用jni的第二种方法来访问这些数据, 当我调用第二种方法时,我必须再次解析文件。这显然是正确的行为。 有没有办法解决这个问题? BTW:我刚接触c ++。 解决方案 我不确定我是否理解你的问题是正确的。但我想你想要做的是在多个jni调用上保持某种c ++对象的存活。 你可以做多件事 ..
发布时间:2018-12-28 15:34:20 Java开发

了解JNI参数的安全访问

我正在研究HotSpot在JNI代码运行时如何执行垃圾收集和/或堆压缩。 似乎是常识可以随时在Java中移动对象。我试图明白,如果JNI受到垃圾收集效果的影响。存在许多JNI函数来明确地防止垃圾收集;例如 GetPrimitiveArrayCritical 。如果引用确实是volatile,那么这样的函数是有意义的。但是,如果不是这样的话就毫无意义。 关于这个问题,似乎存在大量相互矛盾 ..
发布时间:2018-12-28 15:02:06 Java开发

使用eclipse调试OpenJDK源代码

在我的项目中,我想使用eclipse调试OpenJDK版本8的C / C ++源代码。为了这个目的,我已经做了以下内容: 编译的OpenJDK8与 - 与调试级别= slowdebug 使用此自述 进口源生成文件项目变成蚀 创建了一个Eclipse运行配置,执行对已编译的OpenJDK的java.exe的GDB和靶向示例java程序。在这个配置中我附加了JDK源代码目录路径,这样ecli ..
发布时间:2018-12-28 14:37:55 Java开发

Java中的虚拟操纵杆

你有没有听说过带有Java包装的Windows虚拟操纵杆? 我正在尝试PPJOY,它运行良好,但后来我需要使用JNI从Java开始工作,暂时看起来并不容易。 谢谢! 解决方案 你有。我为PPJoy制作了一个Java包装器。它真的很容易使用。请参阅: 尝试{ / * *尝试创建新的操纵杆。 * / 操纵杆操纵杆=新操纵杆(); 尝试{ / * *设置 ..
发布时间:2018-12-28 14:34:27 Java开发

使用Qt / C ++通过JNI调用Java代码。 FindClass没有找到类

我是JNI的新手,这是我第一个尝试从C ++调用Java代码的程序。我正在使用Qt 5.2而且我正在编写一个Android应用程序。 我无法找到我的java类并将其加载到我的C ++程序中。我已经在堆栈溢出和其他地方阅读了很多帖子,这似乎是一个常见的问题,但我还没能解决我的问题.. 我也不确定Java VM是否已正确设置,因为QAndroidJniEnvironment上的Qt文档很少 ..
发布时间:2018-12-27 20:02:12 Java开发

JNI:将字节从c ++传递给java

HANDLE hFile = CreateFileA(“C:\\ myfile.zip”,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); const int size = GetFileSize(hFile,NULL); char * buffer = new char [size]; DWORD读取; ..
发布时间:2018-12-27 19:35:13 Java开发

通过JNI接口共享输出流

我正在编写一个通过JNI接口使用C ++库的Java应用程序。 C ++库创建类型为 Foo 的对象,这些对象通过JNI正式传递给Java。 假设库有输出函数 void Foo :: print(std :: ostream& os) 我有一个Java OutputStream out 。如何从Java调用 Foo :: print ,以便输出显示在 out ?有没 ..
发布时间:2018-12-27 19:23:04 Java开发

Linux上的JDK 1.8缺少JNI包含文件

我正在尝试编译以下项目: https://github.com/entropia/libsocket-can- java 我总是收到此错误消息?有谁知道如何解决它,它可能是Linux上的JDK 1.8.0.11(x64 Debian Wheezy)中的错误吗? 2:0, 。从JNI / cansocket.cpp:23: /opt/jdk1.8.0_11/in ..
发布时间:2018-12-27 19:11:46 Java开发