3

なぜこれが起こるのか誰かが知っていますか?

これは、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)とSun1.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でのGNUClasspath0.98DBusバインディング2.6

4

1 に答える 1

15

これは、Cacao プラットフォームへの GNU Classpath のポートのバグである可能性が最も高いです。私の記憶が正しければ、Classpath バージョンのほとんどのメソッドはjava.lang.Class、ライブラリのポートごとに実装する必要がある「vm」クラスにデリゲートします。

確かClass.getSimpleName()に、パッケージ修飾なしでクラス名を返す必要があります。

于 2009-08-28T06:35:18.820 に答える