如何使用 dbus-java 注册 dbus 对象?
Posted
技术标签:
【中文标题】如何使用 dbus-java 注册 dbus 对象?【英文标题】:How to register dbus object using dbus-java? 【发布时间】:2013-02-21 11:23:33 【问题描述】:我正在尝试使用来自 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 自动创建的接口的实现(xml 在与 c++ (qt) 一起使用时工作正常)。
dbAccess 将在 dbus 上从数据库发送一些数据(主要是整数)。在 Qt 中一切正常,但我必须在 java(不是我的语言)中重新实现它。
要使用 dbus-java,您必须安装 libmatthew-debug 并使用
执行程序-Djava.library.path=/usr/lib/jni
我正在研究 Linux Mint。
【问题讨论】:
【参考方案1】:两件事:
-
您需要先注册一个总线名称,即
conn.requestBustName("com.example")
DatabaseAccessImpl
需要实现一个扩展 DBusInterface
的接口。
Here's 我不久前用代码编写的教程,可以帮助您了解正在发生的事情。
【讨论】:
在本教程中,so在哪里?以及如何将 ref 添加到项目中??以上是关于如何使用 dbus-java 注册 dbus 对象?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 上编译和使用 java-dbus 2.7?
在java中运行时将DBus Variant的值转换为正确的类型
使用 Python 注册“Hello World”DBus 服务、对象和方法