Jersey版本2。18(2015年6月5日发布)以后+ Google App Engine引发NoClassDefFoundError
错误消息" javax.naming.InitialContext是受限制的类。有关详细信息,请参阅Google App Engine开发人员指南。"
下面是堆栈跟踪的一部分。
Caused by: java.lang.NoClassDefFoundError: javax.naming.InitialContext is a restricted class. Please see the Google App Engine developer's guide for more details.
at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:52)
at org.eclipse.persistence.jaxb.Concurrent$GetManagedExecutorService.compute(Concurrent.java:54)
at org.eclipse.persistence.internal.cache.Memoizer$1.call(Memoizer.java:44)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.eclipse.persistence.internal.cache.Memoizer.compute(Memoizer.java:51)
... 78 more
Jersey版本2.17(2015年3月11日发布)至少在我的开发环境中不会引发此错误。
我如何使用泽西与GAE的最新版本(2.22.1,2015年10月7日发布),而不会遇到此错误?
我知道" JRE班级白名单" 。
https://cloud.google.com/appengine/docs/java/jrewhitelist
答案 0 :(得分:1)
我正在使用平针织版2.22.1而没有任何问题。这是我的maven依赖
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-mvc-jsp</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.bundles</groupId>
<artifactId>jaxrs-ri</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>
<properties>
<jersey.version>2.22.1</jersey.version>
</properties>
您可能不小心包含了其他一些球衣组件,例如jersey-container-jetty-servlet
与app引擎不兼容。