2013-05-07 4 views
8

私のプロジェクトでsomesクラスのコードのみを生成するカスタムジェネレータがあります。次のコードは、generate方法の先頭にある、と私はこのコードは、年以上変わらずとなっているGWT TypeOracle.getTypesがすべての型を返さない

TypeOracle oracle = context.getTypeOracle(); 
JClassType markerInterfaceType = oracle.findType(MY_PARENT_CLASS.class.getName()); 
List<JClassType> clazzes = new ArrayList<JClassType>(); 
for (JClassType classType : oracle.getTypes()) { 
    if (!classType.equals(markerInterfaceType) 
     && classType.isAssignableTo(markerInterfaceType)) { 
    clazzes.add(classType); 
    } 
} 

clazzesリストで作業する必要があります。すべてのクラスを置きますが、先週から、それいくつかのクラスはジェネレータによって考慮されていないようです。

は、いくつかの掘削後、私は(いくつかは数ヶ月のためにそのまま残っていた)これらのクラスでもこれらの無視のクラスが新しくクラスを作成していないoracle.getTypes()

  • によって返されたリストに含まれていないことが判明
  • 限り他のクラスから無視されるクラスを区別する方法はありません
  • 私たちのgwtバージョンではアップグレードされませんでした(一部の人は2.5.0、他は2.5.1を使用しています)
  • これらのクラッセによって使用されるパッケージのアップグレードはありませんsのいずれか
  • oracle.findType(MISSING_CLASS.class.getName())戻りnull
  • 問題は一部の人のために表示されますが、問題のあるクラスの名前を変更し、同じクラス
  • に問題

私の最高の推測では、私が持っているということでしょうを修正するために、思いませんどこかでキャッシュの問題が発生しますが、どこを見てもわかりません。

+0

あなたはGWT-UnitCacheフォルダの内容を削除しようとしたことがありますか?それは私のためにこのような一見奇妙なエラーを修正するのに役立ちます。 また、欠落しているクラスのサンプル名もありますか?これらの名前を変更すると、キャッシュに関連する問題の隣で、名前に関連する可能性があります。 –

答えて

0

Mark Tielemansが彼のコメントで述べたように、gwt-UnitCacheディレクトリ(Eclipseを使用している場合はプロジェクトのルートにある)を削除して再構築します。それはあなたのために問題を修正する必要があります。

0

答えが遅すぎるかもしれませんが、私はこの問題に直面していました。 gwt-UnitCacheフォルダをクリアしても何の助けにもなりませんでした。最後に問題が見つかりました。 oracleによって取得されなかったクラスは、gwt-extクラスのリファレンスを持ち、モジュール定義(.gwt.xmlファイル)にgwt-extを継承していませんでした。その参照を削除すると問題が解決しました。したがって、クラス内でモジュール定義で参照されない、または含まれていないものを使用すると、クラスがOracleによって選択されなくなる可能性があります。乾杯!

0

T 彼が欠けているクラスは正しくコンパイルされず、黙って失敗します。典型的な原因はスーパーソースです。そうしないと、通常のJavaコンパイルではすでにコンパイルに失敗している可能性があります。

This question asks how to figure out what line is actually failing silently inside that missing class.

+0

それは基本的に@ anand-sahaが何を言っていたのではないですか? (ただし、改訂/改良が可能です) –

+0

はい。その答えは、継承されていない文が原因である可能性があると主張しています。そして、おそらくそのクラスが正しくコンパイルされないような他の潜在的な原因が十数個あります。 –

関連する問題