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 でデータ (ほとんどが int) を送信します。それはすべてQtでうまく機能しますが、Javaで再実装する必要があります(私の言語ではありません)。

dbus-java を使用するには、libmatthew-debug をインストールしてプログラムを実行する必要があります。

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

私はLinux Mintに取り組んでいます。

4

1 に答える 1

5

2つのこと:

  1. 最初にバス名を登録する必要があります。つまり、conn.requestBustName("com.example")
  2. DatabaseAccessImplを拡張するインターフェースを実装する必要がありますDBusInterface

これは、何が起こっているのかを理解するのに役立つコードを使用して、少し前に作成したチュートリアルです

于 2013-03-06T15:46:04.133 に答える