我刚刚开始学习GWT和Google App Engine。不管是好是坏,我开始做部署到Google App Engine的教程,如下所示:
http://code.google.com/webtoolkit/doc/latest/tutorial/appengine.html
本教程以RPC教程为基础,如下所示:
http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html
我下载了StockWatcher项目并顺利地完成了RPC教程,然后继续学习“部署到Google App Engine”教程。
我使用的是Eclipse,但我猜做RPC教程的人不是这样做的,因为我必须遵循说明部分来“设置项目(没有Eclipse)”。
一切都很顺利,直到我到了教程的最后一步来测试这个应用程序。当我得到这行的时候:
列表股票=(列表) q.execute(getUser());
在文件中,src/com.google.gwt.sample.stockwatcher.server/StockServiceImpl.java.完整的代码在教程中,所以我不会在这里上传。
q.execute()语句抛出以下异常:
javax.jdo.JDOFatalUserException:没有com.google.gwt.sample.stockwatcher.server.Stock.的元数据也许你需要在这个类上运行增强器?com.google.gwt.sample.stockwatcher.server.Stock.的NestedThrowables: org.datanucleus.store.appengine.FatalNucleusUserException:没有元数据也许你需要在这个类上运行增强器?
我尝试了几天,但没有取得任何进展。我不明白我是如何运行“增强器”的,我也不知道那是什么意思。这是不是一个工具的名字,他们只是忘记了把专有名词大写成Enhancer?
我怀疑,因为我不是从头开始创建项目的,所以在下载RPC项目作为起点时,教程没有提到您需要进行一些设置。
虽然我不知道关于“增强器”的建议是什么意思,但如果有帮助的话,我确实在build.xml中看到了这一部分……
name="datanucleusenhancer"
classpathref="tools.class.path"
classname="org.datanucleus.enhancer.tools.EnhancerTask" />
<datanucleusenhancer
classpathref="tools.class.path"
failonerror="true">
<fileset dir="war/WEB-INF/classes" includes="**/*.class" />
</datanucleusenhancer>谁能给我一点提示,告诉我我做错了什么?谢谢。
请不要叫snark
发布于 2011-08-27 12:26:46
再次仔细阅读本教程后,我遗漏了Stock.java中的以下代码行:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
这似乎让问题消失了,但我看不出这条消息有什么帮助。
avax.jdo.JDOFatalUserException:没有com.google.gwt.sample.stockwatcher.server.Stock.的元数据也许你需要在这个类上运行增强器?com.google.gwt.sample.stockwatcher.server.Stock.的NestedThrowables: org.datanucleus.store.appengine.FatalNucleusUserException:没有元数据也许你需要在这个类上运行增强器?
首先,它建议“运行增强器”,这不是你想要做的,我也不知道如何运行增强器,所以我可以确认这样做没有帮助。我也看不到教程中关于这一行是如何创建元数据的描述。在关于“注意事项”的代码一节中没有对此进行描述。
发布于 2012-12-25 14:57:38
除了前面答案中提到的类注释之外,还要确保您的字段具有getter和setter。特别是,我在没有使用getId()函数的情况下遇到了问题。
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
public Long getId() {
return this.id;
}https://stackoverflow.com/questions/7209026
复制相似问题