GAE JCache NumberFormatException,我需要编写Java来避免吗?

GAE JCache NumberFormatException,我需要编写Java来避免吗?,java,google-app-engine,scala,memcached,restlet,Java,Google App Engine,Scala,Memcached,Restlet,下面的代码在此行中生成NumberFormatException: val cache = cf.createCache(Collections.emptyMap()) 您是否看到任何错误? 我需要避免这种情况吗,还是有Scala的方法 ... import java.util.Collections import net.sf.jsr107cache._ object QueryGenerator extends ServerResource { private val log = L

下面的代码在此行中生成NumberFormatException:

val cache = cf.createCache(Collections.emptyMap())
您是否看到任何错误?
我需要避免这种情况吗,还是有Scala的方法

...
import java.util.Collections
import net.sf.jsr107cache._

object QueryGenerator extends ServerResource {
  private val log = Logger.getLogger(classOf[QueryGenerator].getName)
}

class QueryGenerator extends ServerResource {
  def getCounter(cache:Cache):long = {
      if (cache.containsKey("counter")) {
        cache.get("counter").asInstanceOf[long]
      } else {
        0l
      }
    }

  @Get("html")
  def getHtml(): Representation = {
    val cf = CacheManager.getInstance().getCacheFactory()
    val cache = cf.createCache(Collections.emptyMap())

    val counter = getCounter(cache)

    cache.put("counter", counter + 1)

    val q = QueueFactory.getQueue("query-generator")
    q.add(TaskOptions.Builder.url("/tasks/query-generator").method(Method.GET).countdownMillis(1000L))

    QueryGenerator.log.warning(counter.toString)

    new StringRepresentation("QueryGenerator started!", MediaType.TEXT_HTML)
  }
}

谢谢

我怀疑调用
getCounter
时确实发生了异常<代码>数字格式异常在您尝试将字符串转换为数字时抛出,并且该字符串不包含可识别的数字。

我添加了一个小Java类,用于立即放置/更新。这不是最优雅的解决方案,但它很有效。Scala解决方案仍将受到欢迎

爪哇:

斯卡拉:


您的两段代码并不相等——一段使用
Long
,另一段使用
Int
,并且您更改了导入。此外,您还用Java重写了一行似乎与崩溃无关的代码。如果您在Scala中将CacheHelper作为一个对象来编写,并且它所做的事情与崩溃时完全相同,您是否确定这一点?(即
对象CacheHelper{def update…}
)如果它这样做了,那将非常奇怪。我没有编写对象,但在QueryGenerator类中有该方法。它产生了一些已经[此处提到][k]的错误。很抱歉,导入和类型不一致。我只是在这期间玩了很多。[k] :
import javax.cache.Cache;

public class CacheHelper {
    public static final void update(Cache cache,String key,Object value) {
        cache.put(key,value);
    }
}
import java.util.Collections
import javax.cache.CacheManager
import somewhere.CacheHelper

object QueryGenerator extends ServerResource {
  private val log = Logger.getLogger(classOf[QueryGenerator].getName)
}

class QueryGenerator extends ServerResource {

  @Get("html")
  def getHtml(): Representation = {
    val cf = CacheManager.getInstance().getCacheFactory()
    val cache = cf.createCache(Collections.emptyMap())

    val counter = if (cache.containsKey("counter")) {
      cache.get("counter").asInstanceOf[Int]
    } else {
      0
    }

    CacheHelper.update(cache,"counter",counter+1)

    val q = QueueFactory.getQueue("query-generator")
    q.add(TaskOptions.Builder.url("/tasks/query-generator").method(Method.GET).countdownMillis(1000L))

    QueryGenerator.log.warning(counter.toString())

    new StringRepresentation("QueryGenerator started!", MediaType.TEXT_HTML)
  }
}