NoClassDefFoundError com.google.common.collect.Lists

时间:2016-12-15 16:04:03

标签: java maven google-app-engine jersey jersey-2.0

我正在使用Jersey(或尝试)在App Engine上开发RESTful API +一些JSP页面。我得到的错误似乎表明番石榴存在问题。

  

[INFO] GCLOUD:警告:启动处理程序时出错[INFO] GCLOUD:   java.lang.NoClassDefFoundError:com / google / common / collect / Lists

我的理解是,对于泽西岛的版本,我应该使用特定的重新包装版本的番石榴来匹配。这是不正确的?我需要添加什么版本的Guava作为依赖关系才能最终消除此错误消息?

根据maven,这是我的依赖树。番石榴可以在第二行找到。

[INFO] +- com.google.appengine:appengine-api-1.0-sdk:jar:1.9.48:compile
[INFO] +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.25:compile
[INFO] +- javax.servlet:servlet-api:jar:2.5:provided
[INFO] +- jstl:jstl:jar:1.2:compile
[INFO] +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.25:compile
[INFO] |  +- org.glassfish.hk2.external:javax.inject:jar:2.5.0-b30:compile
[INFO] |  +- org.glassfish.jersey.core:jersey-common:jar:2.25:compile
[INFO] |  |  +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] |  |  +- org.glassfish.hk2:hk2-api:jar:2.5.0-b30:compile
[INFO] |  |  |  +- org.glassfish.hk2:hk2-utils:jar:2.5.0-b30:compile
[INFO] |  |  |  \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.5.0-b30:compile
[INFO] |  |  +- org.glassfish.hk2:hk2-locator:jar:2.5.0-b30:compile
[INFO] |  |  |  \- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO] |  +- org.glassfish.jersey.core:jersey-server:jar:2.25:compile
[INFO] |  |  +- org.glassfish.jersey.core:jersey-client:jar:2.25:compile
[INFO] |  |  +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.25:compile
[INFO] |  |  \- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  \- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile
[INFO] +- org.glassfish.jersey.ext:jersey-mvc-jsp:jar:2.4:compile
[INFO] |  \- org.glassfish.jersey.ext:jersey-mvc:jar:2.4:compile
[INFO] \- javax.ejb:javax.ejb-api:jar:3.2:compile
[INFO]    \- javax.transaction:javax.transaction-api:jar:1.2:compile

这是我的编译目标的lib文件夹,Guava在那里,我没有看到它的冲突。

aopalliance-repackaged-2.5.0-b30.jar
appengine-api-1.0-sdk-1.9.48.jar
hk2-api-2.5.0-b30.jar
hk2-locator-2.5.0-b30.jar
hk2-utils-2.5.0-b30.jar
javassist-3.20.0-GA.jar
javax.annotation-api-1.2.jar
javax.ejb-api-3.2.jar
javax.inject-2.5.0-b30.jar
javax.transaction-api-1.2.jar
javax.ws.rs-api-2.0.1.jar
jersey-client-2.25.jar
jersey-common-2.25.jar
jersey-container-servlet-core-2.25.jar
jersey-guava-2.25.jar
jersey-media-jaxb-2.25.jar
jersey-mvc-2.4.jar
jersey-mvc-jsp-2.4.jar
jersey-server-2.25.jar
jstl-1.2.jar
osgi-resource-locator-1.0.1.jar
validation-api-1.1.0.Final.jar

之前我有一个类似的错误,原因可能是类似的原因,但是在更改为当前的Guava版本(从22.0官方重新打包2.25)并运行maven clean install后,它似乎消失了。

  

[INFO] GCLOUD:警告:失败   JettyContainerService $ @ ApiProxyHandler 44578632:   java.lang.NoSuchMethodError:   org.glassfish.jersey.server.model.internal.ModelProcessorUtil.enhanceResource(Lorg / GlassFish中/汗布/服务器/模型/ RuntimeResource; Lorg / GlassFish中/汗布/服务器/模型/ ResourceModel $生成器; Ljava / UTIL /列表;)V

任何帮助都会非常感激,在以前的挣扎之后我完全放弃了对泽西的痛苦。

帮助我Obi Wan Kenobi。你是我唯一的希望。

1 个答案:

答案 0 :(得分:2)

我解决了这个问题已经有一段时间了,有些人可能不会考虑将版本降级为解决方案,因为它并不总是令人满意的事情。然而,我更关心的是让事情变得有效而不是处于最前沿。

  1. 将球衣,球衣番石榴及所有随行球衣库从2.25降级至2.22.1

  2. 将h2k-api,h2k-locator,h2k-utils从2.5.0降级到2.4.0以匹配。

  3. 此项目针对应用引擎版本1.9.44