2016-08-25 3 views
0

веб-сервер: котgson TypeToken ClassNotFoundException

фреймворк: spring3

Я использую gson-2.3.1

ошибка последующей журнал

java.lang.ClassNotFoundException: com.mysite.chart.**ChartCtrl$2** 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) 
**at com.mysite.chart.ChartCtrl.msyData(ChartCtrl.java:278)** 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 

и ChartCtrl 278 линии следуют

Type objType = new TypeToken<ArrayList<HashMap<String, Object>>>(){}.getType(); 

Как я могу решить эту проблему.

ответ

0

ClassNotFoundException вызывается, если определение класса с указанным именем не найдено, и, посмотрев на stacktrace, поскольку он содержит 2 доллара, заставляет меня поверить, что вы (или кто-то) используете какой-либо внутренний класс или анонимный внутренний класс, использует некоторую библиотеку, которая не является пакетом в вашем .war-файле.

В этом конкретном случае, я думаю, вы не упаковали gson jar, который содержит класс TypeToken, в вашу папку WEB-INF/lib. Можешь подтвердить?

+0

gson-2.3.1.jar находится в WEB-INF/Lib. Другой способ использования этого же класса, но работает нормально. –

+0

Если это так, то, как я уже упоминал, ваш класс имеет некоторый внутренний класс или анонимный класс? Это типичная проблема класса, которая разрешена во время выполнения. –

+0

Я не использую внутренний класс. Класс ChartCtrl не имеет внутреннего класса. Не знаю, почему find ChartCtrl $ 2 class .. –

1

Я также столкнулся с этой проблемой, в моем случае я импортировал неправильный класс, который каким-то образом был доступен в classpath для IDE, но не во время выполнения.

Заменить ниже один:

import com.google.common.reflect.TypeToken; 

С этой:

import com.google.gson.reflect.TypeToken; 
Смежные вопросы