0
好吧我必須在進一步調查後重寫我的問題。使用GAE時,gwt-dev.jar與war/lib classpath上的icu jar衝突
我遇到下面的問題在我的GWT/GAE項目:
java.lang.RuntimeException: Class com.google.appengine.tools.development.agent.runtime.Runtime$21 can not access a member of class com.ibm.icu.text.CollatorServiceShim with modifiers ""
at com.ibm.icu.text.Collator.getShim(Collator.java:456)
at com.ibm.icu.text.Collator.getInstance(Collator.java:478)
at com.google.visualization.datasource.datatable.value.TextValue$1.<init>(TextValue.java:126)
at com.google.visualization.datasource.datatable.value.TextValue.getTextLocalizedComparator(TextValue.java:125)
at com.google.visualization.datasource.datatable.value.Value$1.<init>(Value.java:141)
at com.google.visualization.datasource.datatable.value.Value.getLocalizedComparator(Value.java:140)
at com.google.visualization.datasource.query.engine.TableRowComparator.<init>(TableRowComparator.java:66)
at com.google.visualization.datasource.query.engine.QueryEngine.performSort(QueryEngine.java:234)
at com.google.visualization.datasource.query.engine.QueryEngine.executeQuery(QueryEngine.java:128)
at com.google.visualization.datasource.DataSourceHelper.applyQuery(DataSourceHelper.java:410)
at com.klawt.server.resources.chart.InvoicesChartServerResource.retrieve(InvoicesChartServerResource.java:129)
一些更多的調查顯示,GWT-dev.jar包含ICU庫的副本:
公衆抽象類com.ibm.icu.text.Collator implements java.util.Comparator,com.ibm.icu.util.Freezable
是gwt-dev.jar的一部分
我的項目對icu4j 4.0.1(對於Google Visualization Datasource library)有依賴性。但GAE SDK堅持使用包含在gwt-dev.jar中的版本;
我想必須有一種方法來設置我的開發環境,所以這種方法有效,它以前做過。
我已經嘗試將GWT SDK移動到我的構建路徑的「訂單和導出」選項卡的底部,並將icu jar移動到頂部,但沒有運氣。
我不確定我明白:這是服務器端代碼嗎? 'WEB-INF/lib'中的icu4j JAR是?如果您還將其從DevMode類路徑中刪除,該怎麼辦? –
@ThomasBroyer是的,這是服務器端代碼。 appengine devserver在gwt-dev.jar中選擇icu版本,而不是icu-4.0.1.jar中的版本,但appengine安全沙箱禁止以某種方式使用這些類。你是什麼意思從DevMode類路徑中刪除?刪除gwt-dev.jar?那麼DevMode不會再工作了,對吧? – koma
@ThomasBroyer刪除icu-4.0.1.jar給出了java.lang.ClassNotFoundException:com.ibm.icu.util.GregorianCalendar,所以這不是一個選項:-(還試圖保持lib文件夾中的icu-4.0.1.jar但沒有在eclipse構建路徑中添加它,沒有運氣 – koma