Java-Klasse.getSimpleName() und .getName() verhält sich anders als auf Kakao versus Sun Java
Hat jemand eine Idee warum das passiert sein?
Dies ist eine modifizierte Zeilen aus der Java-DBus bindings (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() ));
}
Überprüfen Sie jetzt die Differenz im Ausgang von Cacao (0.99.4) versus 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
versus...
cacao -Djava.library.path=/usr/lib/classpath:/ho... DBusChat
type.getName: org.freedesktop.DBus type.getSimpleName: org.freedesktop.DBus
Ausnahme ist unwichtig - Ihr Wesen durch dieses Verhalten verursacht wird... Irgendwelche Ideen? Oder ist dieser seltsame bug mit Kakao.
Weiß jemand, ob .getName() ist eine VM-abhängige Sache?
Info:
GNU Classpath 0.98 auf beiden JVMs
DBus bindings 2.6
Ihr singen die "falschen" - Mechanismus, um herauszufinden, ob eine Klasse eine standalone-oder die innere Klasse.getEnclosingClass() etc.
InformationsquelleAutor EdH | 2009-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist wahrscheinlich ein bug in der Portierung von GNU Classpath der Kakao-Plattform. Wenn ich mich Recht erinnere, die meisten der Methoden in der Classpath-version von
java.lang.Class
Delegierten zu einer "vm" - Klasse, die implementiert werden müssen, für jeden port in der Bibliothek.Sicherlich
Class.getSimpleName()
zurückgeben sollte der Klassenname ohne Paket-Qualifikation.Dies ist ein classpath-bug. Bestätigt die cacao-team. Eine einfache fix in der vm.Referenz.java.lang.VMClass.
Es scheint ein erneuertes Interesse an GNU classpath vor kurzem, und als ein Ergebnis gibt es einen patch für dieses problem in CVS, endlich: cvs.savannah.gnu.org/viewvc/classpath/classpath/vm/reference/...
InformationsquelleAutor Stephen C