Ubuntu 16.04 上的 dbus java 库更新

Posted

技术标签:

【中文标题】Ubuntu 16.04 上的 dbus java 库更新【英文标题】:dbus java library update on Ubuntu 16.04 【发布时间】:2017-07-26 22:47:32 【问题描述】:

我最近将我的 Ubuntu 14.04 升级到了 Ubuntu 16.04 LTS。我的一个项目使用 dbus java 库(http://www.java2s.com/Code/JarDownload/dbus/dbus.jar.zip)将蓝牙设备连接到 Ubuntu 操作系统。

在 Ubuntu 16.04 上,我收到以下异常:

  `java.library.path=/usr/lib/jvm/java-8-openjdk-i386/jre/lib/i386/server:/usr/lib/jvm/java-8-openjdk-i386/jre/lib/i386::/usr/java/packages/lib/i386:/usr/lib/i386-linux-gnu/jni:/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu:/usr/lib/jni:/lib:/usr/lib
Exception in thread "main" java.lang.NoClassDefFoundError: cx/ath/matthew/unix/UnixSocket
    at org.freedesktop.dbus.Transport.connect(Transport.java:765)
    at org.freedesktop.dbus.Transport.<init>(Transport.java:730)
    at org.freedesktop.dbus.DBusConnection.<init>(DBusConnection.java:159)
    at org.freedesktop.dbus.DBusConnection.getConnection(DBusConnection.java:142)`

我还注意到 Ubuntu 16.04 上的 bluez 软件包名称从 bluez-utils 更改为 bluez。

dbus java 库最后一次更新是在 2010-01-17。它可能需要使用最新的 Ubuntu 16.04 bluez 软件包进行更新(不确定??)

如果您对上述问题有任何指示,请分享。

【问题讨论】:

【参考方案1】:

我使用了原始 java 库的 Git 分叉存储库,它解决了这个问题。 https://github.com/cathive/dbus-java

【讨论】:

【参考方案2】:

需要进行一些侦探工作。在我的例子中,我有一台开发机器,其中 jar 文件执行良好,还有一台服务器,执行失败。

首先,哪个依赖是问题?缺少 jar 文件。

通过在两台机器上运行'java -verbose:class -jar JARFILENAME'并比较输出,我发现jvm使用了位于

的unix.jar和hexdump.jar
/usr/share/java/unix.jar
/usr/share/java/hexdump.jar

而不是我曾经收录的。猜猜一个解决方案是重新编译 dbus-java.jar 以在本地使用它们,但是我在服务器上做了一个快速修复并添加了指向搜索到的 jar 的链接

ln -s /pathtomyunixdotjar/unix.jar /usr/share/java/unix.jar
ln -s /pathtomyunixdotjar/hexdump.jar /usr/share/java/hexdump.jar

在服务器上编译和安装 libmatthew-java 也可以解决这个问题。

【讨论】:

以上是关于Ubuntu 16.04 上的 dbus java 库更新的主要内容,如果未能解决你的问题,请参考以下文章

无法从 ubuntu 中的服务连接到会话 dbus

Ubuntu 16.04 上的 DB Visualizer - java.util.NoSuchElementException

Android Q - ubuntu16.04 上的 VTS 环境设置

Linux 上的 Qt 5.8 (ubuntu 16.04) 应用程序部署

Qt5 (Ubuntu 16.04) 上的 QCA 链接库出错

无法在 python 中为 ubuntu 16.04 上的 libreoffice 导入 uno