java - 如何在 2019 年从 Java 链接到“unix-java”
问题描述
我正在使用此处的 NetworkManager/DBus 代码。它构建成功,但在运行时会产生:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no unix-java in java.library.path: [/usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib]
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2660)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:829)
at java.base/java.lang.System.loadLibrary(System.java:1870)
at cx.ath.matthew.unix.UnixSocket.<clinit>(UnixSocket.java:40)
at org.freedesktop.dbus.Transport.connect(Transport.java:772)
at org.freedesktop.dbus.Transport.<init>(Transport.java:737)
at org.freedesktop.dbus.DBusConnection.<init>(DBusConnection.java:299)
at org.freedesktop.dbus.DBusConnection.getConnection(DBusConnection.java:282)
这是一个 Maven 项目。我可以通过引入另一个工件或声明来解决这个问题吗?我整天都在转圈看那些 10 多年前的东西,试图弄清楚我是否使用过时的代码,因为以前我一直在使用我自己的通过内省生成的类,但现在显然我需要这个额外的库.
或者这个 unix-java 库是我必须通过我的发行版的包管理器获取的答案?无论是它emerge
,apt-get
还是任何一个。
解决方案
发现这个可能不相关的 DBus 服务页面,但提到了您尝试使用的同一个本机库:
对于 dbus 支持,您需要在系统上安装 jni/unix-java.so(Debian:libunixsocket-java ArchLinux:libmatthew-unix-java (AUR))。
它提到unix-java.so
本机库,与您尝试加载的库相同,因此如果您使用的是 Debian/Ubuntu,请尝试执行以下操作:
apt install libunixsocket-java
推荐阅读
- c++ - 调试会导致许多错误。当我在学校计算机上使用该代码时,它运行良好。但不是在我自己的电脑上
- android - 我有一个堆栈项,我想通过双击返回来退出应用程序
- python - Django - 如何在 html 模板中创建链接打开应用程序并将对象值作为参数传递
- c++ - 命名空间内的 C++ 中的变量声明
- node.js - 使用过滤器查询子文档数组并使用猫鼬返回原始文档
- c# - Stomp.Net 示例:需要解释
- c - 在屏幕上设置装饰 GtkWindow 的框架位置
- sql - 从 MS Access 的范围内返回一个值
- python - 如何使用 Tesseract 对图像进行 OCR
- filter - Spring Integration - 过滤器 - 将消息发送到不同的端点