La Classe Java.getSimpleName() et .getName() de se comporter différemment sur le Cacao versus Sun Java
Ce que quelqu'un a une idée de pourquoi ce qui se passe?
C'est en quelques lignes modifiées à partir de la Java DBus liaisons (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() ));
}
Maintenant découvrez la différence en sortie de Cacao (0.99.4) par rapport au Soleil 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
contre...
cacao -Djava.library.path=/usr/lib/classpath:/ho... DBusChat
type.getName: org.freedesktop.DBus type.getSimpleName: org.freedesktop.DBus
L'Exception est sans importance - être causé par ce comportement... des idées? Ou est-ce quelque bug bizarre avec du Cacao.
Personne ne sait si .getName() est une machine virtuelle dépendante de la chose?
Info:
GNU Classpath 0.98 sur les deux machines virtuelles
DBus liaisons 2.6
Votre chanter le "mauvais" mécanisme pour déterminer si une classe est une application autonome ou à l'intérieur de la classe.getEnclosingClass (), etc.
OriginalL'auteur EdH | 2009-08-28
Vous devez vous connecter pour publier un commentaire.
C'est probablement un bug dans le port de GNU Classpath pour le Cacao plate-forme. Si je me souviens bien, la plupart des méthodes dans le Classpath version de
java.lang.Class
déléguer à un "vm" de la classe qui doit être mis en œuvre pour chaque port de la bibliothèque.Certainement
Class.getSimpleName()
doit retourner le nom de la classe sans le paquet de qualification.C'est un chemin de classe bug. A confirmé l'équipe de cacao. Ses un simple correctif dans la vm.de référence.java.lang.VMClass.
Il semble y avoir un regain d'intérêt dans GNU classpath récemment, et comme un résultat il ya un patch pour résoudre ce problème dans le CVS, enfin: cvs.savannah.gnu.org/viewvc/classpath/classpath/vm/reference/...
OriginalL'auteur Stephen C