我写了下面的代码:
package sample;
import org.freedesktop.dbus.DBusInterface;
import org.freedesktop.dbus.DBusInterfaceName;
import org.freedesktop.dbus.DBusConnection;
@DBusInterfaceName("org.mpris.clementine")
interface Player extends DBusInterface, java.rmi.Remote {
void Pause();
}
class Main {
public static void main (String[] args) throws org.freedesktop.dbus.exceptions.DBusException, java.lang.InterruptedException {
DBusConnection dc = DBusConnection.getConnection(DBusConnection.SESSION);
Player player = (Player) dc.getRemoteObject("org.mpris.clementine", "/Player");
player.Pause();
dc.disconnect();
}
}得到一个错误的队列
Player player = (Player) dc.getRemoteObject("org.mpris.clementine", "/Player");上面写着
Exception in thread "main" java.lang.ClassCastException: $Proxy2 cannot be cast to sample.Player我知道问题出在继承、误解或类似的问题上。我彻底地找过了,但还是找不到答案。如何正确地写这一行?错在哪里呢?
发布于 2013-01-06 22:07:17
您应该确保由
dc.getRemoteObject 实现接口播放器
发布于 2013-01-06 22:31:56
改用下面的代码:
Object obj = dc.getRemoteObject("org.mpris.clementine", "/Player");
if( obj instanceof Player ) {
Player player = (Player) obj;
player.pause();
}发布于 2013-01-06 23:41:05
不确定'dc.getRemoteObject()‘是什么,如果它是一个远程操作,你需要解组对象。
Object obj= dc.getRemoteObject("org.mpris.clementine","/Player");
Player =(Player )PortableRemoteObject.narrow(obj,Player.class)
https://stackoverflow.com/questions/14182868
复制相似问题