2009-08-28 2 views
3

왜 이런 일이 발생하는지 알 수 있습니까? Java Class.getSimpleName() 및 .getName()은 카카오 대 Sun Java에서 다르게 동작합니다.

은 대 일 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 

대 자바 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())); 
    }  

이제 카카오 (0.99.4)의 출력의 차이를 체크 아웃에서 일부 수정 된 라인이다. ..

cacao -Djava.library.path=/usr/lib/classpath:/ho... DBusChat 
type.getName: org.freedesktop.DBus type.getSimpleName: org.freedesktop.DBus 

예외는 중요하지 않습니다 - 자사는 ...이 동작에 의해 어떤 아이디어 발생되는? 아니면 카카오와의 이상한 버그일까요?

.getName()이 VM에 종속적인지 여부를 아는 사람이 있습니까?

정보 : 모두의 JVM에

GNU 클래스 패스 0.98 DBUS 바인딩 2.6

이 가장 가능성이 카카오 플랫폼으로 GNU 클래스 패스의 포트에서 버그가
+0

클래스가 독립형 또는 내부 클래스인지 알아보기 위해 "잘못된"메커니즘을 사용하십시오 .getEnclosingClass() 등 –

답변

15

. 올바르게 기억한다면 Classpath 버전 java.lang.Class에있는 대부분의 메서드는 라이브러리의 각 포트에 구현해야하는 "vm"클래스에 위임합니다.

확실히 Class.getSimpleName()은 패키지 자격없이 클래스 이름을 반환해야합니다.

+0

우수 정보. 고맙습니다! – EdH

+1

이것은 classpath 버그입니다. 카카오 팀을 확인했습니다. vm.reference.java.lang.VMClass에서의 간단한 수정. – EdH

+1

최근에 GNU 클래스 경로에 다시 관심이있는 것으로 보이며 결과적으로 CVS에이 문제에 대한 패치가 있습니다. http://cvs.savannah.gnu.org/viewvc/classpath/classpath/vm/reference /java/lang/VMClass.java?r1=1.21&r2=1.22 – Ringding