2

現在、SWT スタンドアロン アプリケーションで作業しています。普段はWindowsで作業していますが、Ubuntuで作業したいので、以下の環境を構築しました。

Ubuntu 11.04 64 ビット Java 6 update 27 64 ビット Eclipse Java EE 3.5 Galileo 64 ビット SWT GTK 64 ビットを使用しています

さまざまな SWT ウィジェットを拡張するいくつかのクラスがあります。

例えば

    public class MyCombo extends Combo implements CellEditor<Long> {
    private Set<ListenerRef> listeners = new HashSet<ListenerRef>();

@Override
    public void addListener(int eventType, Listener listener) {
        listeners.add(new MyCombo.ListenerRef(eventType, listener));
        super.addListener(eventType, listener);
    }

 @Override
    protected void checkSubclass() {
        // Do nothing
    }
.
.
.

このコードは、SWT32 ビットと java32 ビットを実行している Windows 7 64 ビットで、Eclipse 32 ビットから完全に機能します。

Ubuntu 11.04では、リスナーを追加しようとするとNPE(NullPointerException)が発生します。リスナーセットがnullのようですが、上記のコードのようにセットを初期化する必要はありません。ウィンドウズ7

最初に、Ubuntu64 ビットで SWT 32 ビット アプリを実行する際に問題が発生しました。これは、64 ubuntu で 32 個のアプリを実行するとバグがあるように思われるため、64 バージョンで実行しようとしたところ、このエラーが発生しました。この NPE がセットをチェックしないようにすると、

java.lang.NullPointerException
    at org.eclipse.swt.accessibility.Accessible.isValidThread(Unknown Source)
    at org.eclipse.swt.accessibility.Accessible.checkWidget(Unknown Source)
    at org.eclipse.swt.accessibility.Accessible.addRelation(Unknown Source)

何が原因でしょうか?以前の Ubuntu ディストリビューションでこの問題を認識していますか? 少なくとも SWT 32 ビットを実行している Windows 7 では、この問題は発生しません。

詳細が必要な場合はお知らせください

感謝と敬意

ところで、忘れていましたが、SWT は Linux では 3.7、Windows では 3.6.2 です。

4

0 に答える 0