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

0 投票
1 回答
386 浏览

java - 如何使用 java jnr 推断 clib 结构

jnr 有没有办法为我构造一个结构,以便使用 jnr 访问返回的调用。

例如,如果我想使用

其中 struct statvfs 是:

我怎么能访问这个?

0 投票
2 回答
925 浏览

java - JNR 采用指针参数的回调/闭包

我正在使用 JNR 并尝试使用以下 C 等效签名传递回调函数:

进入一些C函数。我已将嵌套在 Java 端的 JNR 库接口中的回调声明为:

与 JNR 库接口中的另一个函数

作为doSomethingC 代码中的包装器接受int(*)(void const*, void const**, void**). 但是每当我创建回调时:

并将其传递给doSomething我的 JNR 库接口的方法,我得到运行时错误:

我的使用有什么问题Pointer

0 投票
0 回答
99 浏览

java - JNA 相当于 JNR 的 ObjectReferenceManager?

JNR 有一个叫做 的东西,ObjectReferenceManager它使跟踪引用非常方便。一个对象被传递给它,并且一个唯一的 id(a Pointer,但它实际上只是一个 id afaik)被传回,可用于稍后终止引用。虽然我可以使用地图、空闲列表和整数计数器轻松实现此功能,但如果 JNA 有某种看起来更漂亮的祝福实现,我想改用它。

0 投票
0 回答
177 浏览

java - 如何在 JNR 中使用位域映射 C 结构?

我有以下要使用JNR-FFI映射的结构。请注意,此结构包含位域。不幸的是,没有可用的 JavaDoc 或任何其他类型的文档。

0 投票
1 回答
176 浏览

java - 在退出 java 启动的命令行命令或 shell 脚本之前提取进程环境

我想读取/转储从 java 内部启动的进程(.sh 文件、命令行调用等)的环境变量。

例如,我有一个运行并设置环境变量的 shell 脚本:

我从父 java 程序调用该 shell 脚本,但在 shell 脚本退出之前,我想从其环境中提取 $blah 的值。除了返回代码和 stdout/stderr 流之外,这将允许我将信息传回给调用的 java 程序。

我想我可以将 env 转储到一个文件中,然后再读取该文件,但我需要专门修改脚本来做到这一点,涉及文件系统,这似乎很麻烦。

通过阅读 POSIX exit 的各种文档,我可以在进程上放置 on_exit 钩子,但我想知道是否有办法使用相当纯的 java 来做到这一点。JNR 可以帮忙吗?

任何其他想法都会很棒,跨平台越多越好,例如将调用的命令/shell 包装在更多 UNIXy 的优点或除标准 groovy/java 进程启动库之外的其他库中。

0 投票
1 回答
2857 浏览

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

0 投票
1 回答
376 浏览

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 端。

以下是上述命令触发的读取操作的完整控制台输出:

0 投票
2 回答
1285 浏览

java - UnsatisifedLinkedError:无法在 jar 文件中找到存根库

我正在尝试使用这个jnr-jffi库。它似乎依赖于jffi,所以我也构建了它并包含在我的 libs 文件夹中。

我加载本机代码的代码如下:

我收到以下错误:

值得一提的是,我确实包含了一个文件夹,该文件夹jni似乎包含一堆适用于各种平台的本机库。

我如何继续使用这个库加载我的本机代码。

请注意,我在启动我的项目时尝试添加各种路径,并将库添加到我机器上的不同位置,但没有成功。

这意味着我需要弄清楚如何进一步调试这个?欢迎任何建议。

0 投票
1 回答
192 浏览

java - __stdcall 与 JNR

我正在使用JNR并尝试调用__stdcall函数。我已经尝试使用stdcall()约定加载库:

并尝试用@StdCall.

结果,当我尝试调用方法时出现以下错误:

0 投票
3 回答
1998 浏览

java - 如何在 jnr ffi 中使用带有结构的结构

我有以下c代码:

我想从Java做到这一点:

我也想使用jnr-ffi,所以我查看了测试并最终得到了这个:

问题是a_number根本没有设置的值,所以我在输出中得到一个垃圾值,例如:

那么我如何获得与我的 C 代码相同的内容呢?