我是Google App Engine的新手。早些时候,我使用jsf,hibernate,java和glassfish服务器创建了一个动态Web应用程序。现在,我将该应用程序结构转换为Google App引擎结构。所以现在我正在使用GAE和本地MySQL数据库。

我使用Runtime Target GAE Server创建了简单动态Web应用程序。我可以调用Jsf登录页面,但是无法登录到获得java.lang.NoClassDefFoundError: java.rmi.server.UID is a restricted class的应用程序。

完整堆栈跟踪在这里:

Caused by: java.lang.NoClassDefFoundError: java.rmi.server.UID 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 net.sf.ehcache.Cache.<init>(Cache.java:191)
    at net.sf.ehcache.config.ConfigurationHelper.createCache(ConfigurationHelper.java:291)
    at net.sf.ehcache.config.ConfigurationHelper.createDefaultCache(ConfigurationHelper.java:241)
    at net.sf.ehcache.CacheManager.configure(CacheManager.java:262)
    at net.sf.ehcache.CacheManager.init(CacheManager.java:196)
    at net.sf.ehcache.CacheManager.<init>(CacheManager.java:183)
    at net.sf.ehcache.CacheManager.create(CacheManager.java:343)
    at org.hibernate.cache.EhCacheProvider.start(EhCacheProvider.java:130)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:173)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1176)
    at hibernate.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:31)
    at hibernate.UsersDAO.login(UsersDAO.java:98)
    at utils.LoginBean.loginProject(LoginBean.java:82)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    ... 43 more


我的HibernateSessionFactory类(发生错误的代码段):

private static String CONFIG_FILE_LOCATION = "hibernate.cfg.xml";
    private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
    private  static Configuration configuration = new Configuration();
    private static org.hibernate.SessionFactory sessionFactory;
    private static String configFile = CONFIG_FILE_LOCATION;

    static {
            try {
            configuration.configure(configFile);
            sessionFactory = configuration.buildSessionFactory(); // <==here getting error
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }


我不明白我在哪里做错。如果有人有相同的经验,请与我分享。
我在谷歌上搜索此异常,并得到许多答案,但该答案不适合,因为这里在不同的库中获得异常。
在此先感谢并赞赏。

最佳答案

看来您使用的是旧版本的EhCache。
这份文档http://www.ehcache.org/documentation/2.8/integrations/googleappengine.html说您应该使用2.3+版本,以避免java.rmi.server.UID is a restricted class异常。

10-07 16:11
查看更多