2017-09-25 29 views
1

这是gradle依赖关系。 (已更新)java.lang.NoClassDefFoundError:com/google/api/client/json/JsonFactory问题

compile group: 'net.sf.ehcache', name: 'ehcache', version: '2.10.4' 
compile 'org.springframework:spring-context-support:4.3.8.RELEASE' 
compile('org.springframework.boot:spring-boot-starter-web') 
compile('org.springframework.boot:spring-boot-starter-data-jpa') 
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.6' 

compile group: 'com.google.api-client', name: 'google-api-client', version: '1.20.0' 

此代码生成错误。

HttpTransport transport = new NetHttpTransport(); 
     JacksonFactory jsonFactory = 
       new JacksonFactory(); 
     GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(
       transport, jsonFactory) 
       .setAudience(Collections.singletonList("1009293319809-dek5gcam0af2c52ute611c8p51cfvker.apps.googleusercontent.com")) 
       // Or, if multiple clients access the backend: 
       //.setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3)) 
       .build(); 

收到的错误

Caused by: java.lang.NoClassDefFoundError: com/google/api/client/json/JsonFactory 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
at java.lang.Class.getDeclaredMethods(Class.java:1975) 
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:613) 
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524) 
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:510) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:247) 
... 63 common frames omitted 
Caused by: java.lang.ClassNotFoundException: com.google.api.client.json.JsonFactory 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735) 
... 70 common frames omitted 

enter image description here

我缺少什么库的任何想法。我假设图书馆可能存在冲突。我怎样才能解决这个问题?

回答

1

你的屏幕截图显示了2个版本的google-api-client库:

enter image description here

而且,你在你的gradle这个构建文件两次导入库:

compile group: 'com.google.api.client', name: 'google-api-client', version: '1.4.1-beta' 
... 
compile group: 'com.google.api-client', name: 'google-api-client', version: '1.20.0' 

,你得到java.lang.NoClassDefFoundError事实似乎是由于较旧版本的库不包含所提及的类,并且正在覆盖该库的最新版本。 您只需从Gradle文件中删除对旧版本库(1.4.1-beta)的引用即可。

+0

我认为有问题的类在'google-http-client-jackson'中找到# –

+0

@Yohannes标签有点误导。该错误消息清楚地表明该类没有被发现:'引起:java.lang.NoClassDefFoundError:com/google/api/client/json/JsonFactory' –

+0

@LouisBono我删除了测试版,但它仍然无效。我把杰克逊标签,因为我怀疑这也可能是冲突。 – legend12345