Оговорка: я новичок в GWT/PlayN, поэтому это может быть очевидной ошибкой, которую я совершаю.
Когда у меня есть базовый (начальный) проект PlayN, метод моего класса BlahGame
реализует интерфейс Game
, который требует три метода: init
, paint
и update
. Начальный класс выглядит примерно так:
public class BlahGame implements Game {
public void init() { ... }
public void paint(float alpha) { ... }
public void update(float alpha) { ... }
}
Я создал класс BaseGame
для реализации игры, вот так:
public class BaseGame implements Game {
public void init() { ... }
public void paint(float alpha) { ... }
public void update(float alpha) { ... }
}
Затем мой основной класс игры стал подклассом BaseGame
, вот так:
public class BlahGame extends BaseGame {
public void init() { ... base.init(); ... }
}
Все компилируется и работает из Java. Но когда я пытаюсь GWT-компилировать HTML-версию моей игры, я получаю эту ошибку:
com.google.gwt.dev.jjs.InternalCompilerException: Failed to get JNode
at com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:140)
at com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:71)
at com.google.gwt.dev.jjs.impl.BuildTypeMap.getType(BuildTypeMap.java:730)
...
[ERROR] <no source info>: public class com.deengames.BaseGame
extends java.lang.Object
implements : playn.core.Game
/* methods */
public void <init>()
public void init()
[unresolved] public void paint(float)
[unresolved] public void update(float)
[unresolved] public int updateRate()
Я не уверен, что я здесь упускаю. Может быть, нужно обновить некоторые классы GWT? Или это что-то другое? Я ожидал, что HTML-версия скомпилируется, поскольку Java-версия компилируется; сигнатуры классов не должны меняться от подклассификации.
Edit: Я использую совершенно новый, шаблонный проект PlayN. В классе, если я расширяю базовый класс И реализую интерфейс, он по-прежнему не компилируется; работает только удаление расширения базового класса.