GAE JCache NumberFormatException,我需要编写Java来避免吗?
下面的代码在此行中生成NumberFormatException: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
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)
}
}