3

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

我的代码:

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 上从数据库发送一些数据(主要是整数)。这一切在 Qt 中运行良好,但我必须在 java(不是我的语言)中重新实现它。

要使用 dbus-java,您必须安装 libmatthew-debug 并执行程序

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

我正在研究 Linux Mint。

4

1 回答 1

5

两件事情:

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

是我不久前用代码编写的教程,可以帮助您了解正在发生的事情。

于 2013-03-06T15:46:04.133 回答