java-native-interface相关内容

本机方法的源代码是否可用?

首先我想让你知道这个问题与 什么是无关的Java 中的本机实现.我从该线程中获得了许多有用的信息. 我想知道本地实现的代码是否可用?我有 jdk 源代码,但我找不到 System.currentTimeMillis 或 Runtime.getRuntime().availableProcessors() 或其他本机方法的本机代码. 解决方案 是的,见os::javaTimeMilli ..
发布时间:2022-01-25 21:09:54 Java开发

使用 JNI 创建、填充和返回 Java 类实例

我正在尝试使用 JNI 函数来创建 Java 类并使用 DeviceId.java 构造函数方法设置该类的一些属性.我可以使用 GetMethodID 获取构造函数方法,但是如何创建 Device.java 的新实例然后设置属性(setId 和 setCache).目标是向调用者返回一个完全填充的 Device.java 对象实例.有什么想法吗? JNI 函数: JNIEXPORT jo ..
发布时间:2022-01-25 21:09:25 Java开发

Javah 工具错误:找不到 hellojni 的类文件

我正在尝试使用 javah 工具从 Windows 7 操作系统的命令行创建一个头文件,但我一直都失败了. 我遵循了不同的方法,甚至从 oracle 阅读了 javah 工具的文档,但它们无助于克服这个问题. 我的类文件(hellojni.class)和java文件(hellojni.java)都在D:\驱动器的根目录下. 但是每当我运行 javah 工具时,它都会给我一个错误: ..
发布时间:2022-01-25 21:07:49 Java开发

使用 JNI 中的 GetDirectBufferAddress

我试图了解如何从 JNI 层使用 GetDirectBufferAddress.为了理解,我构建了一个非常简单的示例: public class my_image_info {静止的 {System.loadLibrary(“my_jni");}私有 java.nio.ByteBuffer image_info_bb;本机静态无效初始化(java.nio.ByteBuffer bb);我的图像信 ..
发布时间:2022-01-25 21:05:28 Java开发

本机 Java 方法是否等同于静态 Java 方法?

我正在将一些本机方法重写为常规 Java 方法. 本地方法实际上是静态的吗?或者是否有过隐含“this"参数的情况? 谢谢! 解决方案 Native 方法可以是 static 或非 static,就像常规 Java 方法一样. 非static 原生方法接收 this 引用,static 则接收对包含类的引用. 来自 JNI 规范: 本机方法参数 JNI ..
发布时间:2022-01-25 21:05:12 Java开发

围绕 C 主函数编写 JNI 包装器

我必须围绕现有的 C 源代码编写 JNI 包装器,以便可以从 Java 调用它们.但是大多数 C 源代码都接受命令行参数(argc 和 argv)并广泛使用它们.有什么方法可以将我在 Java 中捕获的字符串 args[] 传递给 C 函数,而对 C 源文件的更改很少? 我相信作为 JNI 包装器的一部分,我必须用 C 语言编写一个由 Java 代码调用的函数. 解决方案 当然,您必 ..
发布时间:2022-01-25 21:04:51 其他开发

如何使用 JNI 或 JNA 读取窗口标题?

希望重返开发领域;主要是使用 Java 调用一些原生的 win32 函数(我不想在 .NET 中构建).... 谁能指出我可以使用 Java (JNI/JNA/SWIG) 从不同的运行窗口中读取标题的地方.假设您知道您尝试挂接的应用程序在内存空间的哪个位置. 解决方案 在 JNA 中: 公共接口 User32 扩展 StdCallLibrary {User32 实例 = (User ..
发布时间:2022-01-25 21:04:27 Java开发

如何让 Apple Java Extensions (com.apple.eawt) 在 JDK 7 及更高版本上工作?

TL;DR:Apple 已放弃对 Java 的原生功能支持.特别是触摸板手势不再起作用.我编写了一个使用 JNI 完成这项工作的库.看看我下面的答案. 我正在寻找大约几个小时以使 Apple Java 扩展在 JDK 7 或 8 上运行.我一直在尝试所有我能想到的.互联网上所有关于此的线程都只是将此归咎于 JDK.我认为这应该是可以解决的,因为它在 JDK 6 中工作.为了清楚起见:我可以让 ..
发布时间:2022-01-25 21:04:08 Java开发

JNI-java.lang.UnsatisfiedLinkError:找不到本机方法

我正在使用 OpenCV 开发一个 Android 项目.有些方法没有Java版本,所以我必须使用NDK在我的项目中使用它们. 这是我第一次使用NDK,所以在搜索了一些示例后,我编写了代码,在我的设备上运行它,并收到以下错误消息: 07-04 10:26:19.555 21270-21270/com.example.MyTest E/AndroidRuntime: FATAL EXCEPT ..
发布时间:2022-01-25 21:03:48 移动开发

进行涉及 Java 的 RAW 套接字编程的最佳方法

我有一些现有的 C 代码使用 ICMP 原始套接字执行 Ping,我需要在 Java 中使用此代码,因为 Java 不支持 ICMP 包.当我将代码包装在JNI中并调用它时,C代码在执行时无法获取套接字: socket(AF_INET, SOCK_RAW, 1); 我猜 Java 已经放弃了一些特权,这些特权会禁止在 Java 进程中使用原始套接字.这个我必须找到解决办法. 我观 ..
发布时间:2022-01-25 21:03:38 Java开发

在 Java 程序中调用 C# 方法

由于不同的原因,不能使用 JNI 在 Java 中直接调用 C# 方法.所以首先我们必须使用 C++ 为 C# 编写一个包装器,然后创建 dll 并通过 Java 中的 JNI 使用它. 我在 C++ 中调用 C# 代码时遇到问题.我正在将 C# .netmodule 文件添加到 C++ 项目中.代码粘贴在下面.如果我做错了什么,请指导我. 这是我的托管 C++ 类 UsbSerial ..
发布时间:2022-01-25 21:03:21 Java开发

未定义对 `JNI_CreateJavaVM' linux 的引用

我正在尝试熟悉 JNI API,但无法编译示例 C++ 程序. 这是我用来编译的命令,下面是我要编译的程序.我得到的错误是: /tmp/cczyqqyL.o:在函数“main"中:/home/nc/Desktop/jni/simple/ctojava/callJava.cpp:16:对“JNI_CreateJavaVM"的未定义引用 编译: g++ -g -I/usr/lib/jvm/ ..
发布时间:2022-01-25 21:03:02 C/C++开发