經過緩慢且冗長的演進之後,開發環境終於逐步變成 Java 8 + GWT 2.8 + GXT 4.0…
然後昨天手賤去升級 Eclipse,結果重啟不能、抱怨 Java 8 不給用、得換到 Java 11(印象中)以後。把 JAVA_HOME
切到 OpenJDK 14.0.1 之後,換 GWT 罷工,理由是 GWT 2.8 只能用 Java 8。為了都使用同一個 JDK 的 無聊 理由,所以 GWT 就乾脆也升到 2.8.2,也就是 Java 14 + GWT 2.8.2 + GXT 4.0。
前面是前情提要,接下來終於進入到主角了:RQC
RQC (14e5fb7) 還停留在 Java 7 + GWT 2.7 + GXT 3.1 的狀態,而且那時 GoogleSheetToolkit 也還沒抽出去。所以得先處理開發環境升級…
然後就爆炸了… <囧>
目前確認的一個詭異炸點(也許還有其他的 😱 )是 SheetIdGrid.java 的 genColumnModel()
,只要用到 GetValueProvider
就會在 attach 的時候炸 NPE(實際上是炸 AttachDetachException
)。關鍵點是 GetValueProvider.getPath()
預設回傳 null,只要不用 GetValueProvider
或是 override getPath()
隨便回傳個空字串都行。
帳面上看起來似乎對症下藥了,但其實整件事很謎:
GetValueProvider
已經用 N 年、有 N 個Grid
在用這玩意- 在另外一個 project(LATE)完全無法重現這個問題。
- 這兩個 project 的差別就只有 RQC 原本是 Java 7 + GWT 2.7 + GXT 3.1,而 LATE 原本是 Java 8 + GWT 2.8 + GXT 4.0,其餘 pom.xml / gwt.xml 都(幾乎)一樣。
目前實在沒什麼想法 (X你X的,都無法重現了還能怎樣) ,只能就先留個紀錄備考。當然改變 GetValueProvider.getPath()
的回傳值是一個萬用解,不過那等到其他 project 也炸了再來考慮吧… 😭