Java app engine req.getParameter类型为float

Java app engine req.getParameter类型为float,java,google-app-engine,eclipse-plugin,floating-point,Java,Google App Engine,Eclipse Plugin,Floating Point,我正在尝试做一些非常类似于应用程序引擎教程(入门)中的留言簿的事情。但是,我想修改表单中字段的类型。Eclipse没有显示任何错误,但服务器显示: Problem accessing /. Reason: java.lang.NoSuchMethodError: prototipo2.Greeting.getDistance()Ljava/lang/Float; Caused by: javax.servlet.ServletException: java.lang.NoSuchMeth

我正在尝试做一些非常类似于应用程序引擎教程(入门)中的留言簿的事情。但是,我想修改表单中字段的类型。Eclipse没有显示任何错误,但服务器显示:

Problem accessing /. Reason: 

java.lang.NoSuchMethodError: prototipo2.Greeting.getDistance()Ljava/lang/Float;

Caused by:
 javax.servlet.ServletException: java.lang.NoSuchMethodError: prototipo2.Greeting.getDistance()    Ljava/lang/Float;
 at org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:862)
 at org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:791)
 at org.apache.jsp.prototipo2_jsp._jspService(prototip o2_jsp.java:326)
 at org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
 at javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
 at org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:377)
 at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:313)
 at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:260)
 at com.google.appengine.tools.development.PrivilegedJ spServlet.access$101     (PrivilegedJspServlet.java:23)
 at com.google.appengine.tools.development.PrivilegedJ spServlet$2.run(PrivilegedJspServlet.java:59)
 at java.security.AccessController.doPrivileged(Native Method)
 at com.google.appengine.tools.development.PrivilegedJ spServlet.service(PrivilegedJspServlet.java:57)
 at javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
 at org.mortbay.jetty.servlet.ServletHolder.handle(Ser vletHolder.java:511)
 at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(ServletHandler.java:1166)
 at com.google.appengine.tools.development.BackendServ ersFilter.doFilter(BackendServersFilter.java:97)
 at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(ServletHandler.java:1157)
 at org.mortbay.jetty.servlet.ServletHandler.handle(Se rvletHandler.java:388)
 at org.mortbay.jetty.security.SecurityHandler.handle( SecurityHandler.java:216)
 at org.mortbay.jetty.servlet.SessionHandler.handle(Se ssionHandler.java:182)
 at org.mortbay.jetty.handler.ContextHandler.handle(Co ntextHandler.java:765)
 at org.mortbay.jetty.webapp.WebAppContext.handle(WebA ppContext.java:418)
 at com.google.appengine.tools.development.DevAppEngin eWebAppContext.handle(DevAppEngineWebAppContext.ja va:78)
 at org.mortbay.jetty.servlet.Dispatcher.forward(Dispa tcher.java:327)
 at org.mortbay.jetty.servlet.Dispatcher.forward(Dispa tcher.java:126)
 at com.google.appengine.tools.development.StaticFileU tils.serveWelcomeFileAsForward(StaticFileUtils.jav a:80)
 at com.google.appengine.tools.development.LocalResour ceFileServlet.maybeServeWelcomeFile(LocalResourceF ileServlet.java:254)
 at com.google.appengine.tools.development.LocalResour ceFileServlet.doGet(LocalResourceFileServlet.java: 120)
 at javax.servlet.http.HttpServlet.service(HttpServlet .java:617)
 at javax.servlet.http.HttpServlet.service(HttpServlet .java:717)
 at org.mortbay.jetty.servlet.ServletHolder.handle(Ser vletHolder.java:511)
 at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(ServletHandler.java:1166)
 at com.google.appengine.tools.development.HeaderVerif icationFilter.doFilter(HeaderVerificationFilter.ja va:35)
 at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(ServletHandler.java:1157)
 at com.google.appengine.api.blobstore.dev.ServeBlobFi lter.doFilter(ServeBlobFilter.java:60)
 at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(ServletHandler.java:1157)
 at com.google.apphosting.utils.servlet.TransactionCle anupFilter.doFilter(TransactionCleanupFilter.java: 43)
 at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(ServletHandler.java:1157)
 at com.google.appengine.tools.development.StaticFileF ilter.doFilter(StaticFileFilter.java:122)
 at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(ServletHandler.java:1157)
 at com.google.appengine.tools.development.BackendServ ersFilter.doFilter(BackendServersFilter.java:97)
 at org.mortbay.jetty.servlet.ServletHandler$CachedCha in.doFilter(ServletHandler.java:1157)
 at org.mortbay.jetty.servlet.ServletHandler.handle(Se rvletHandler.java:388)
 at org.mortbay.jetty.security.SecurityHandler.handle( SecurityHandler.java:216)
 at org.mortbay.jetty.servlet.SessionHandler.handle(Se ssionHandler.java:182)
 at org.mortbay.jetty.handler.ContextHandler.handle(Co ntextHandler.java:765)
 at org.mortbay.jetty.webapp.WebAppContext.handle(WebA ppContext.java:418)
 at com.google.appengine.tools.development.DevAppEngin eWebAppContext.handle(DevAppEngineWebAppContext.ja va:78)
 at org.mortbay.jetty.handler.HandlerWrapper.handle(Ha ndlerWrapper.java:152)
 at com.google.appengine.tools.development.JettyContai nerService$ApiProxyHandler.handle(JettyContainerSe rvice.java:363)
 at org.mortbay.jetty.handler.HandlerWrapper.handle(Ha ndlerWrapper.java:152)
 at org.mortbay.jetty.Server.handle(Server.java:326)
 at org.mortbay.jetty.HttpConnection.handleRequest(Htt pConnection.java:542)
 at org.mortbay.jetty.HttpConnection$RequestHandler.he aderComplete(HttpConnection.java:923)
 at org.mortbay.jetty.HttpParser.parseNext(HttpParser. java:547)
 at org.mortbay.jetty.HttpParser.parseAvailable(HttpPa rser.java:212)
 at org.mortbay.jetty.HttpConnection.handle(HttpConnec tion.java:404)
 at org.mortbay.io.nio.SelectChannelEndPoint.run(Selec tChannelEndPoint.java:409)
 at org.mortbay.thread.QueuedThreadPool$PoolThread.run (QueuedThreadPool.java:582)
 Caused by: java.lang.NoSuchMethodError: prototipo2.Greeting.getDistance()Ljava/lang/Float;
 at org.apache.jsp.prototipo2_jsp._jspService(prototip o2_jsp.java:187)
 ... 56 more
我的代码是:

@Persistent
 private Float distance;


public Greeting (User author, String content, Date date, String distance) {
 this.author = author;
 this.content = content;
 this.date = date;
 this.distance = Float.parseFloat(distance); } 

}

public Float getDistance() {

return distance;
 }
Eclipse说当我运行应用程序时一切正常,但是当我在本地主机域中打开文件时,我看到了我以前写给您的错误

但是,如果我在以下内容中更改代码:

@Persistent
 private String distance;


public Greeting (User author, String content, Date date, String distance) {
 this.author = author;
 this.content = content;
 this.date = date;
 this.distance = distance;


}

public String getDistance() {

return distance;
 }

谢谢大家!

我想你有两个问题:

  • 在某些地方,您有一个长字段,其中的数据是字符串,无法转换为长字段

  • 如果将
    距离
    参数指定给浮点字段,为什么要将其转换为整数?改用
    Float.parseFloat(..)


  • 您遇到的错误是,从数据存储中读回已持久化的实体时。看起来您已经存储了具有字符串属性的数据,您现在正试图将该属性读入一个实体,该实体已将该属性重新定义为Long-您是否更改了ID字段的类型?

    是的,当然,首先我尝试了int,这就是为什么我错了,对不起!关于你的第一点,我不明白。我看不到任何长场地…:(我已经修复了这个问题:float distance=float.parseFloat(req.getParameter(“distance”));但是错误是一样的;(是的,我已经这样做了。事实上,我编译我的项目时没有错误。我尝试用另一种方法来做:从数据存储中读取字符串,然后将字段类型更改为float。这是我的代码:@Persistent private float distance;public Greeting(用户作者、字符串内容、日期、字符串距离){this.author=author;this.content=content;this.date=date;this.distance=Float.parseFloat(distance);}public Float getDistance(){return distance;}我知道这很乱,对不起!如果你愿意,我可以编辑我的主题!;)