我已经与 DN/GAE 问题斗争了 2 天。我使用升级到 DN v2、GWT SDK 2.4.0、Eclipse (Indigo) 的 GAE SDK 1.7.0。
我在我的服务类上运行增强器:21:24:19,468 DEBUG [DataNucleus.Enhancer] - 增强类“bookit.shared.Service”开始...... 21:24:19,468 INFO [DataNucleus.Enhancer] - 类“bookit .shared.Service”已经得到增强。21:24:19,468 调试 [DataNucleus.Enhancer] - 类“bookit.shared.Service”的增强已完成
在 ../WAR/WEB-INF/classes/bookit/shared/Service.class 下的任何地方都没有 bookit.shared.Service.class 的其他副本。确实是增强OK(非增强大小为7KB,增强-12KB)。
我启动我的 GWT 应用程序,在服务器端我不断收到:org.datanucleus.exceptions.NucleusFatalUserException:没有 bookit.shared.Service 的元数据。也许你需要在这个类上运行增强器?在 org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:498)
我打开了 DN 调试模式 (log4j.category.DataNucleus=DEBUG, A1),但是除了上面的消息之外,我没有看到任何有用的信息。
问题:为什么 DN 在运行时没有看到类(bookit.shared.Service)被增强 - 它确实加载它并且实际上它被增强(我通过调试器偷看),但它认为它在查询编译时没有增强步骤,因为元数据似乎没有被加载(我的类使用 JDO 注释标记为 DN 目的,而不是元文件)。
(org.datanucleus.exceptions.NucleusFatalUserException:bookit.shared.Service 没有元数据。也许您需要在此类上运行增强器?在 com.google.appengine.datanucleus.query.DatastoreQuery.compile(DatastoreQuery.java:205 ))