我正在尝试使用org.freedesktop中的dbus-java在dbus上注册对象。根据documentation的要求,此操作需要:创建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自动创建的接口(interface)的实现(xml与c++(qt)一起使用时效果很好)。
dbAccess将在dbus上从数据库发送一些数据(主要是整数)。一切在Qt中都很好用,但是我必须用Java(不是我的语言)重新实现。
为了使用dbus-java,您必须安装libmatthew-debug并执行以下程序
我正在研究Linux Mint。
最佳答案
两件事情:
conn.requestBustName("com.example")
DatabaseAccessImpl
需要实现扩展DBusInterface
的接口(interface)。 Here's我前一段时间编写的教程,其代码可以帮助您了解正在发生的事情。