我正在尝试使用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上工作
两件事:
- 您需要先注册一个总线名称,即
conn.requestBustName("com.example")
-
DatabaseAccessImpl
需要实现一个扩展DBusInterface
的接口
这是我之前用代码做的一个教程,可以帮助你理解发生了什么