我刚开始学习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的元数据。也许你需要在这个类上运行增强器? NestedThrowables: org.datanucleus.store.appengine.FatalNucleusUserException:没有com.google.gwt.sample.stockwatcher.server.Stock的元数据。也许你需要在这个类上运行增强器?
我现在试了几天没有取得任何进展。我不明白我是如何运行“增强器”的,也不知道这意味着什么。这是一个工具的名称,他们只是忘了将专有名词大写为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>
任何人都可以给我一个关于我做错了什么的提示吗?感谢。
请不要嗤之以鼻答案 0 :(得分:0)
在仔细阅读完教程之后,我错过了Stock.java中的以下行:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
这似乎使问题消失了,但我看不出消息是如何有用的。
avax.jdo.JDOFatalUserException:没有com.google.gwt.sample.stockwatcher.server.Stock的元数据。也许你需要在这个类上运行增强器? NestedThrowables:org.datanucleus.store.appengine.FatalNucleusUserException:没有com.google.gwt.sample.stockwatcher.server.Stock的元数据。也许你需要在这个类上运行增强器?
首先,它建议“运行增强器”,这不是你想要做的,也不能弄清楚如何运行增强器,所以我可以确认这样做无济于事。我也没有看到教程中有关该行如何创建元数据的描述。关于“要注意的事项”的代码部分中没有描述这一点。
答案 1 :(得分:0)
除了上一个答案中提到的类注释外,还要确保您的字段具有getter和setter。特别是,没有getId()函数我遇到了问题。
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
public Long getId() {
return this.id;
}