Ich habe einen benutzerdefinierten Generator, der Code nur für einige Klassen in meinem Projekt generiert. Der folgende Code ist zu Beginn des generate
Methode und stellt alle Klassen, die ich benötigt, in der clazzes
Liste arbeiten aufGWT TypeOracle.getTypes gibt nicht alle Typen zurück
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);
}
}
Dieser Code ist seit mehr als einem Jahr unverändert, aber seit der letzten Woche hat es scheint, dass ein paar Klassen vom Generator nicht berücksichtigt werden.
Nach einigem Graben, fand ich, dass diese Klassen nicht einmal in der Liste zurück von oracle.getTypes()
- Diese ignoriert Klassen sind nicht neu Klassen erstellt (zum Teil mehrere Monate unverändert gelassen wurden)
- Soweit Wie ich sagen kann, gibt es keine Möglichkeit, eine Klasse zu unterscheiden, die von keiner anderen Klasse ignoriert wird
- Kein Upgrade in unserer gwt-Version wurde gemacht (einige von uns verwenden 2.5.0, andere 2.5.1)
- Keine Aktualisierung in Paketen, die von diesen Klassen verwendet werden s entweder
oracle.findType(MISSING_CLASS.class.getName())
kehrtnull
- das Problem wird nur für einige Leute, aber nicht auf den gleichen Klassen
- Umbenennung problematischen Klassen das Problem
Meine beste Vermutung zu korrigieren scheint wäre, dass ich habe ein Cache-Problem irgendwo, aber ich habe keine Ahnung, wo ich suchen soll.
Haben Sie den Inhalt gwt-UnitCache Ordner zu löschen versucht? Es hilft oft dabei, scheinbar seltsame Fehler wie diese für mich zu beheben. Haben Sie auch einige Beispielnamen für die fehlenden Klassen? Wenn sie umbenannt werden, kann dies neben einem Caching-Problem auch mit dem Namen zusammenhängen. –