tree-tipsはGAE/Jでslim3とscenic3を組み合わせて作っているのですが、
標題の通り、どうも自動コンパイルがおかしな挙動をします。
@Pageと@ActionPathに文字列でなくクラスを設定した際に起きやすいです。
コンパイルに成功する例
@Page("/guava/") public class GuavaPage extends BasePage { @ActionPath("strings/") public Navigation strings() { setTitle("com.google.common.base.Strings"); setUrl(GuavaPage.class); return setForard(getFilePath(BASE_PATH, "strings.jsp")); }
コンパイルに失敗する例1
@Page(Url.GUAVA.BASE) public class GuavaPage extends BasePage { @ActionPath("strings/") public Navigation strings() { setTitle("com.google.common.base.Strings"); setUrl(GuavaPage.class); return setForard(getFilePath(BASE_PATH, "strings.jsp")); }
コンパイルに失敗する例2
@Page("/guava/") public class GuavaPage extends BasePage { @ActionPath(Url.GUAVA.STRINGS) public Navigation strings() { setTitle("com.google.common.base.Strings"); setUrl(GuavaPage.class); return setForard(getFilePath(BASE_PATH, "strings.jsp")); }
コンパイルに失敗する例3
@Page(Url.GUAVA.BASE) public class GuavaPage extends BasePage { @ActionPath(Url.GUAVA.STRINGS) public Navigation strings() { setTitle("com.google.common.base.Strings"); setUrl(GuavaPage.class); return setForard(getFilePath(BASE_PATH, "strings.jsp")); }
正確には、失敗するというか、失敗する事がある・中途半端なコンパイルになる、という状態です。
ローカルでは何故か動いても、デプロイした後に画面を見ると、以下のエラーが起きていました。
scenic3.UncompleteAnnotationException: Controller class creation error. at scenic3.UrlMatcherImpl.match(UrlMatcherImpl.java:57) at scenic3.UrlsImpl.createController(UrlsImpl.java:47)
URLを定数化してメニュー部分等で利用してたのですが、
こんな現象が起きた為、仕方なくアノテーション部分は文字列ベタ書きするようにしました。
何とかならないのかこれ・・・