有没有人知道为什么会发生这种情况?
这是来自Java DBus绑定(2.6)
的一些修改过的行 // don't let people import things which don't have a
// valid D-Bus interface name
System.out.println("type.getName: " + type.getName() + " type.getSimpleName: " + type.getSimpleName() );
if (type.getName().equals(type.getSimpleName())) {
throw new DBusException(_("DBusInterfaces cannot be declared outside a package: " + "type.getName: " + type.getName()
+ " type.getSimpleName: " + type.getSimpleName() ));
}
现在查看Cacao(0.99.4)与Sun 1.5
的输出差异@ubuntu:~/tmp/cacao$ java -version
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02)
Java HotSpot(TM) Client VM (build 1.5.0_16-b02, mixed mode, sharing)
@ubuntu:~/tmp/cacao$ cacao -version
java version "1.5.0"
CACAO version 0.99.3+hg
java -Djava.library.path=/usr/lib/classpath:/ho... DBusChat
type.getName: org.freedesktop.DBus type.getSimpleName: DBus
...Exception in thread "main" org.freedesktop.dbus.exceptions.DBusExecutionException: Could not get owner of name 'framez.tests.dbus.DbusChatInterface': no such name
...对比
cacao -Djava.library.path=/usr/lib/classpath:/ho... DBusChat
type.getName: org.freedesktop.DBus type.getSimpleName: org.freedesktop.DBus
异常并不重要 - 它是由这种行为引起的......任何想法?或者这是Cacao的一些奇怪的错误。
有人知道.getName()是否依赖于VM?
的信息:
两个JVM上的GNU Classpath 0.98 DBus绑定2.6
答案 0 :(得分:15)
这很可能是Cacao平台的GNU Classpath端口中的一个错误。如果我没记错的话,java.lang.Class
的Classpath版本中的大多数方法都委托给需要为库的每个端口实现的“vm”类。
当然Class.getSimpleName()
应该返回没有包资格的类名。