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은 지정된 이름의 클래스에 대한 정의를 찾을 수 없을 때 throw됩니다. stacktrace를 보면 $ 2가 포함되어 있기 때문에 (또는 누군가) 내부 클래스 나 익명 내부 클래스를 사용하고 있다고 생각합니다. .war 파일에 패키지가 아닌 라이브러리를 사용합니다.

이 특별한 경우에는 TypeToken 클래스가 들어있는 gson jar를 WEB-INF/lib 폴더에 패키지하지 않았을 것입니다. 확인 할수 있어요?

+0

GSON-2.3.1.jar은 WEB-INF/lib에 있습니다. 동일한 클래스의 다른 방법이 사용하지만 올바르게 작동합니다. –

+0

이 경우 내가 언급 한 것처럼 클래스에 내부 클래스 또는 익명 클래스가 있습니까? 이는 런타임시 해결되는 일반적인 클래스 경로 문제입니다. –

+0

내부 클래스를 사용하지 않습니다. ChartCtrl 클래스에 내부 클래스가 없습니다. 왜 ChartCtrl $ 2 클래스를 찾을 수 있는지 모르겠습니다 .. –

1

나는 또한이 문제에 직면했다. 필자의 경우 클래스 패스에서 IDE를 사용할 수 있지만 런타임에는 사용할 수없는 잘못된 클래스를 가져오고 있었다.

교체 한 아래 :

import com.google.common.reflect.TypeToken; 

일이로 :

import com.google.gson.reflect.TypeToken;