问题标签 [jnr]
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 - 如何使用 java jnr 推断 clib 结构
jnr 有没有办法为我构造一个结构,以便使用 jnr 访问返回的调用。
例如,如果我想使用
其中 struct statvfs 是:
我怎么能访问这个?
java - JNR 采用指针参数的回调/闭包
我正在使用 JNR 并尝试使用以下 C 等效签名传递回调函数:
进入一些C函数。我已将嵌套在 Java 端的 JNR 库接口中的回调声明为:
与 JNR 库接口中的另一个函数
作为doSomething
C 代码中的包装器接受int(*)(void const*, void const**, void**)
. 但是每当我创建回调时:
并将其传递给doSomething
我的 JNR 库接口的方法,我得到运行时错误:
我的使用有什么问题Pointer
?
java - JNA 相当于 JNR 的 ObjectReferenceManager?
JNR 有一个叫做 的东西,ObjectReferenceManager
它使跟踪引用非常方便。一个对象被传递给它,并且一个唯一的 id(a Pointer
,但它实际上只是一个 id afaik)被传回,可用于稍后终止引用。虽然我可以使用地图、空闲列表和整数计数器轻松实现此功能,但如果 JNA 有某种看起来更漂亮的祝福实现,我想改用它。
java - 如何在 JNR 中使用位域映射 C 结构?
我有以下要使用JNR-FFI映射的结构。请注意,此结构包含位域。不幸的是,没有可用的 JavaDoc 或任何其他类型的文档。
java - 在退出 java 启动的命令行命令或 shell 脚本之前提取进程环境
我想读取/转储从 java 内部启动的进程(.sh 文件、命令行调用等)的环境变量。
例如,我有一个运行并设置环境变量的 shell 脚本:
我从父 java 程序调用该 shell 脚本,但在 shell 脚本退出之前,我想从其环境中提取 $blah 的值。除了返回代码和 stdout/stderr 流之外,这将允许我将信息传回给调用的 java 程序。
我想我可以将 env 转储到一个文件中,然后再读取该文件,但我需要专门修改脚本来做到这一点,涉及文件系统,这似乎很麻烦。
通过阅读 POSIX exit 的各种文档,我可以在进程上放置 on_exit 钩子,但我想知道是否有办法使用相当纯的 java 来做到这一点。JNR 可以帮忙吗?
任何其他想法都会很棒,跨平台越多越好,例如将调用的命令/shell 包装在更多 UNIXy 的优点或除标准 groovy/java 进程启动库之外的其他库中。
scala - 在 SBT 下运行的应用程序找不到 Classpath jar 中的类
我有一个使用 sbt 的 Scala 项目。它在 Eclipse 下运行得非常好,但是,尝试在 sbt 下运行它(sbt 'run mount 1440'
——包括我需要的参数)会导致ClassNotFoundException
——它找不到jnr.ffi.provider.jffi.NativeClosureProxy
类。但是,运行sbt 'last run'
显示该jnr-ffi-2.0.3.jar
文件(包括所述类)实际上包含在类路径中。关于发生了什么的任何建议?
github 上可用的资源:https ://github.com/FileJunkie/vkfs
java - java中的熔断文件系统-JVM错误双重释放或损坏
我正在使用 jnr-fuse 库(https://github.com/SerCeMan/jnr-fuse)在 java 中编写 Fuse-Filesystem,该库在内部使用 JNR 进行本机访问。
该文件系统用作 Amazon S3 存储桶的前端,基本上使用户能够将其存储桶安装为普通存储设备。
在修改我的读取方法时,我遇到了以下 JVM 错误:
尝试将文件从 fuse-filesystem 复制到本地 FS 时总是会发生错误,通常在第二次调用 read 方法时(对于第二个 128kByte 数据块)
有问题的读取方法是:
使用的输入流实际上是缓冲区上的 ByteArrayInputStream,我使用它来减少与 S3 的 http 通信。我现在在单线程模式下运行 fuse 以避免任何与并发相关的问题。
有趣的是,我已经有了一个没有进行任何内部缓存的工作版本,但其他方面与此处显示的完全相同。
不幸的是,我并不真正了解 JVM 内部,所以我不确定如何深入了解这一点 - 正常调试不会产生任何结果,因为实际错误似乎发生在 C 端。
以下是上述命令触发的读取操作的完整控制台输出:
java - __stdcall 与 JNR
我正在使用JNR并尝试调用__stdcall
函数。我已经尝试使用stdcall()
约定加载库:
并尝试用@StdCall
.
结果,当我尝试调用方法时出现以下错误:
java - 如何在 jnr ffi 中使用带有结构的结构
我有以下c代码:
我想从Java做到这一点:
我也想使用jnr-ffi,所以我查看了测试并最终得到了这个:
问题是a_number
根本没有设置的值,所以我在输出中得到一个垃圾值,例如:
那么我如何获得与我的 C 代码相同的内容呢?