编程语言
首页 > 编程语言> > Java Class.getSimpleName()和.getName()在Cacao与Sun Java上的行为不同

Java Class.getSimpleName()和.getName()在Cacao与Sun Java上的行为不同

作者:互联网

有没有人知道为什么会发生这种情况?

这是来自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)与Su​​n 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

异常是不重要的 – 它是由这种行为引起的……任何想法?或者这是可可的一些奇怪的错误.

有没有人知道.getName()是否依赖于VM?

信息:

两个JVM上的GNU Classpath 0.98
DBus绑定2.6

解决方法:

这很可能是Cacao平台的GNU Classpath端口中的一个错误.如果我没记错的话,java.lang.Class的Classpath版本中的大多数方法都委托给需要为库的每个端口实现的“vm”类.

当然,Class.getSimpleName()应返回没有包限定的类名.

标签:java,jvm-hotspot
来源: https://codeday.me/bug/20190713/1452556.html