Jersey 2.18 + GAE引发了NoClassDefFoundError

时间:2016-02-01 17:32:37

标签: java google-app-engine jersey

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

1 个答案:

答案 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引擎不兼容。