我是 Google App Engine 的新手。早些时候,我使用 jsf、hibernate、java 和 glassfish 服务器创建了一个动态 Web 应用程序。现在我将该应用程序结构转换为 Google App 引擎结构。所以现在我使用GAE和本地MySQL数据库。
我使用运行时目标 GAE 服务器创建了简单动态 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 是受限制的类
异常。
关于java - GAE 中的 Hibernate Ehcache 抛出 java.lang.NoClassDefFoundError : java. rmi.server.UID 是受限类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35291109/