java.lang.NoClassDefFoundError:com/google/api/client/json/JsonFactory问题
问题描述:
这是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
我缺少什么库的任何想法。我假设图书馆可能存在冲突。我怎样才能解决这个问题?
答
你的屏幕截图显示了2个版本的google-api-client
库:
而且,你在你的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)的引用即可。
我认为有问题的类在'google-http-client-jackson'中找到# –
@Yohannes标签有点误导。该错误消息清楚地表明该类没有被发现:'引起:java.lang.NoClassDefFoundError:com/google/api/client/json/JsonFactory' –
@LouisBono我删除了测试版,但它仍然无效。我把杰克逊标签,因为我怀疑这也可能是冲突。 – legend12345