Ok 추가 조사를 통해 질문을 다시 작성해야합니다.gwt-dev.jar가 GAE를 사용할 때 war/lib 클래스 경로에서 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 라이브러리의 사본을 포함 밝혀 abstract 클래스 com.ibm.icu.text.Collator는 다음을 구현합니다. 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로 이동하려고 시도했지만 행운은 없습니다. 오라클 JDK에 오픈 JDK에서 전환
잘 모르겠습니다.이 서버 측 코드입니까? icu4j JAR 파일이'WEB-INF/lib'에 있습니까? DevMode 클래스 패스에서도 제거하면 어떨까요? –
@ThomasBroyer 예, 이것은 서버 측 코드입니다. appengine devserver는 icu-4.0.1.jar 파일이 아닌 gwt-dev.jar에서 icu 버전을 선택하지만 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을 유지하려고 시도했습니다. 그러나 이클립스 빌드 경로에 행운을 추가하지 않고. – koma