java - Scala/Java JNA 检查共享对象可用性

标签 java scala jna shared-objects

我正在编写一个 Scala 程序,它使用通过 JNA 加载的 C++ 共享对象来调用一些我们用 C++ 编写的自定义文件读取函数,并且不希望同时维护 Java/Scala 副本。该程序只需要兼容Linux。

我的问题是,检查共享对象是否以编程方式可用的适当方法是什么?如果用户忘记将共享对象添加到其 LD_LIBRARY_PATH,则当他们尝试使用其中的某些功能时,GUI 将崩溃。我想在启动时进行检查,以确保共享对象可用 - 我可以尝试进行读取,然后捕获任何错误,但这需要一个文件来读取,而且感觉不合适方法来做到这一点。

有什么想法吗?非常感谢。

最佳答案

如果您通过 JNA 加载,那么如果 JNA 找不到该库或由于缺少依赖项而无法加载它,您可以依靠 JNA 抛出 UnsatisfiedLinkError。

System.loadLibrarySystem.load 依赖于 java.library.path,它或多或少是从 LD_LIBRARY_PATH 初始化的 与 JNA 的 jna.library.path 不太一样(JNA 可以通过该变量动态定向以搜索更多位置)。

关于java - Scala/Java JNA 检查共享对象可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12527114/

相关文章:

java - 何时用 256 初始化数组

java - 为什么我的代码会抛出 NoSuchElementException?

scala - sbt console - 为所有子项目设置 scala-version

库中的java权限

java - JNA:java.lang.Error:无效的内存访问 - TS3 库

java - java中获取资源(jar)路径

java - JApplet 内的 JFrame

scala - 为什么相同的对象会根据它们的创建方式在 IntelliJ Scala REPL 中获得不同的打印输出?

postgresql - 如何在spark中使用连接池来postgresql

java - JNA:缺少一些具体方法