使用 dbus 调用 java 方法
Posted
技术标签:
【中文标题】使用 dbus 调用 java 方法【英文标题】:Call java method with dbus 【发布时间】:2013-01-25 07:21:48 【问题描述】:如何使用 dbus 导出 java 方法或对象?
我写这篇文章是因为官方文档很差,我花了好几个小时才弄清楚该怎么做。
理想情况下,DBus 接口应该放在 java 包中
【问题讨论】:
【参考方案1】:DBus.java
import org.freedesktop.dbus.DBusInterface;
import org.freedesktop.dbus.DBusInterfaceName;
@DBusInterfaceName("org.printer")
public interface DBus extends DBusInterface
//Methods to export
public void Print(String message);
Main.java
import org.freedesktop.dbus.DBusConnection;
import org.freedesktop.dbus.exceptions.DBusException;
public class Main
public static void main(String[] args)
Printer p = new Printer();
try
DBusConnection conn = DBusConnection.getConnection(DBusConnection.SESSION);
//Creates a bus name, it must contain some dots.
conn.requestBusName("org.printer");
//Exports the printer object
conn.exportObject("/org/printer/MessagePrinter", p);
catch (DBusException DBe)
DBe.printStackTrace();
conn.disconnect();
return;
//Printer object, implements the dbus interface and gets
//called when the methods are invoked.
class Printer implements DBus
public boolean isRemote()
return false;
public void Print(String message)
System.out.println(message);
您可以在 shell 中使用 qdbus 试试这个,运行:
qdbus org.printer /org/printer/MessagePrinter org.printer.Print test
【讨论】:
以上是关于使用 dbus 调用 java 方法的主要内容,如果未能解决你的问题,请参考以下文章
为啥不能在 Python 中使用 dbus 调用 org.freedesktop.NetworkManager 中的方法?