如何使用dbus-java注册dbus对象



我正在尝试使用org.freedesktop的dbus-java在dbus上注册对象。根据文档,该操作需要:创建DBusConnection,在DBusConnection上创建对象并调用方法exportObject。

My Code:

DatabaseAccessImpl dbAccess = new DatabaseAccessImpl();
    System.out.println("Object created.");

    System.out.println("Trying to connect session bus");
    try {
        conn = DBusConnection.getConnection(DBusConnection.SESSION);
    } catch(DBusException ex) {
        ex.printStackTrace();
    }
    System.out.println("Connected to session bus.");
    System.out.println("Trying to register dbus object");
    try {
        conn.exportObject("/obj/path", new DatabaseAccessImpl());
    } catch (DBusException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }

地点:

DatabaseAccessImpl是CreateInterface自动创建的接口的实现(xml在使用c++ (qt)时工作良好)。

dbAccess将在dbus上发送来自数据库的一些数据(主要是int)。它在Qt中工作得很好,但我必须在java(不是我的语言)中重新实现它。

要使用dbus-java,您必须安装libmatthew-debug并使用

执行程序。

-Djava.library.path =/usr/lib/jni

我在Linux Mint上工作

两件事:

  1. 您需要先注册一个总线名称,即conn.requestBustName("com.example")
  2. DatabaseAccessImpl需要实现一个扩展DBusInterface的接口

这是我之前用代码做的一个教程,可以帮助你理解发生了什么

最新更新