2011-11-07 15 views
0

Composite(AbstractWhiteBoard)を拡張する抽象クラスがあります。それから私はAbstractWhiteBoardを拡張した具体的なクラスを持っています。具体的なクラスをインスタンス化し、それをRootPanelに追加しようとすると、プログラムは単に実行を停止します。私にログファイルを送るためのエラーや出力はありません。何が間違っているのか分かりません。GWT:RootPanelにコンポジットウィジェットを追加すると実行が停止する

AbstractWhiteBoard wb = new ConcreteWhiteBoard(); 
RootPanel.get().add(wb); 
Window.alert("wb added!"); 
:私はこのコードを持っている、だから、

public class ConcreteWhiteBoard extends AbstractWhiteBoard { 

/* 
* CONTSTRUCTORS 
*/ 
public ConcreteWhiteBoard() { 
    super(); 
} 


/* 
* PUBLIC METHOD OVERRIDES 
*/ 
@Override 
public void addNotecard(Notecard nc) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void addPostit(Postit postit) { 
    // TODO Auto-generated method stub 

} 


/* 
* PRIVATE HELPER METHOD OVERRIDES 
*/ 
@Override 
protected void registerDragDropControllers() { 
    // TODO Auto-generated method stub 
} 
} 

、何が起こっているか:ここで

は私の抽象クラスです:

public abstract class AbstractWhiteBoard extends Composite { 
    /* 
     * FIELDS 
     */ 
    protected HorizontalPanel WhiteBoardWrapperPanel; 

    public AbstractWhiteBoard() { 
      WhiteBoardWrapperPanel = new HorizontalPanel(); 
      WhiteBoardWrapperPanel.setStyleName("WhiteBoard-Wrapper"); 
      initWidget(WhiteBoardWrapperPanel); 
    } 

    /* 
     * ABSTRACT PUBLIC METHODS 
     */ 
    abstract public void addNotecard(Notecard nc); 
    abstract public void addPostit(Postit postit); 

    /* 
     * ABSTRACT PROTECTED HELPER METHODS 
     */ 
    abstract protected void registerDragDropControllers(); 
} 

そして、ここに私の具体的な実装クラスです

しかし、私はwbをRootPanelに追加した後、実行は停止します。アラートステートメントは呼び出されません。エラーはなく、ログには何も表示されません。

Compositeを拡張する抽象クラスを持つことに何か問題はありますか?それとも私が見ていない全く違うものなのでしょうか?どんな助けも大歓迎です!

+0

ああ、最後のコードスニペットがEntryPointモジュールの外で行われていると付け加えたいと思うかもしれません。私はそれが問題だとは思わない。 – Jacob

+0

また、最後のコードスニペットの 'this'はタイプミスです。それは実際にはありません。 – Jacob

答えて

1

gwtの未知の例外ハンドラを見てください。実行時例外が発生した場合、それが呼び出されます。あなたのコードを包括的に捕まえることができると考えてください。

しかし、あなたのコードは、モジュールのロードにあなたのエントリポイント内であればキャッチされない例外ハンドラを設定し、キャッチされない例外ハンドラがアクティブになるように(タイマー内の次の関数を呼び出すようにしてください。

を簡単な例を見てみましょうこちらをご覧:

あなたがエミュレートされたスタックをオン(と意味のスタックトレースを取得する)ことができますWebモードで

http://code.google.com/p/mgwt/source/browse/src/main/java/com/googlecode/mgwt/examples/showcase/client/ShowCaseEntryPoint.java?repo=showcase

それは非常に遅いので、あなたが唯一のデバッグの目的のために(あなたのgwt.xmlファイルにこれを追加する必要があります。 ):

<set-property name="compiler.emulatedStack" value="true" /> 

<set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true" /> 
<set-configuration-property name="compiler.emulatedStack.recordFileNames" value="true" /> 
+0

ダニエルのフィードバックをありがとう。私はキャッチされていない例外ハンドラに追加しました。これは報告されているエラーです:
class.com.google.gwt.core.client.JavaScriptException(TypeError):プロパティ 'a'の値を取得できません:オブジェクトはnullまたはundefined.si(StackTraceCreator.java:168)Unknown.Ph(StackTraceCreator.java:421)Unknown.zu(Exceptions.java:29)Unknown.Vd(AgileProject.java:57) – Jacob

+0

下のスタックトレースがライン上にあります。 ConcreteWhiteBoardをRootPanelに追加しようとしています。 – Jacob

+0

DevModeで開発していませんか?その例外はあまり援助されることはありません。なぜなら、すべてが難読化されたjavasctiptであるからです。 – Strelok

0

これは、あなたが最も遅れている開発者のように感じる時間の1つです。私は同時にいくつかの非同期呼び出しを実行していて、実際に作成される前にそれらの呼び出しの1つによって返されたオブジェクトを参照しようとしました。私のDunceキャップは、私は非同期スレッドと混同しています。

大変感謝しています。あなたのインプットは問題に直接つながります!

+0

私は助けてくれると嬉しく思っています。答えを受け入れることで報酬を与えたいと思うかもしれません。 –

関連する問題