java - Objectify - 注册类期间出现 StackOverflowError

标签 java google-app-engine stack-overflow objectify

我有一个配置了 Objectify 5.1.13 的 Java App Engine Maven 项目

<dependency>
    <groupId>com.googlecode.objectify</groupId>
    <artifactId>objectify</artifactId>
    <version>5.1.13</version>
</dependency>

使用相关过滤器

<filter>
    <filter-name>ObjectifyFilter</filter-name>
    <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>ObjectifyFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

在注册类期间(由 ServletContextListener 在开发服务器启动期间创建),我收到堆栈溢出错误

ObjectifyService.factory().register(classToRegister);

这是开发服务器启动期间显示的错误

lug 13, 2016 10:36:57 AM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
INFORMAZIONI: Overwriting system property key 'java.util.logging.config.file', value 'C:\Users\Nicola\.m2\repository\com\google\appengine\appengine-java-sdk\1.9.38\appengine-java-sdk\appengine-java-sdk-1.9.38\config\sdk\logging.properties' with value 'WEB-INF/logging.properties' from 'C:\Users\Nicola\workspace_neon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\Autogrill_GPE\WEB-INF\appengine-web.xml'
lug 13, 2016 10:36:58 AM com.google.apphosting.utils.jetty.JettyLogger info
INFORMAZIONI: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
lug 13, 2016 10:37:04 AM com.google.apphosting.utils.jetty.JettyLogger info
INFORMAZIONI: jetty-6.1.x
lug 13, 2016 10:37:52 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: failed com.google.appengine.tools.development.DevAppEngineWebAppContext@747d97da{/,C:\Users\Nicola\workspace_neon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\Autogrill_GPE}: java.lang.StackOverflowError
lug 13, 2016 10:37:52 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: failed JettyContainerService$ApiProxyHandler@12559336: java.lang.StackOverflowError
lug 13, 2016 10:37:52 AM com.google.apphosting.utils.jetty.JettyLogger warn
AVVERTENZA: Error starting handlers
java.lang.StackOverflowError
    at java.lang.String.hashCode(String.java:1446)
    at java.util.HashMap.hash(HashMap.java:362)
    at java.util.HashMap.getEntry(HashMap.java:462)
    at java.util.HashMap.get(HashMap.java:417)
    at java.util.Collections$SynchronizedMap.get(Collections.java:2037)
    at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.getAppEngineInternalAnnotation(RuntimeHelper.java:101)
    at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:71)
    at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65)
    at com.googlecode.objectify.impl.AbstractProperty.getAnnotation(AbstractProperty.java:58)
    at com.googlecode.objectify.impl.AbstractProperty.<init>(AbstractProperty.java:28)
    at com.googlecode.objectify.impl.FieldProperty.<init>(FieldProperty.java:36)
    at com.googlecode.objectify.impl.translate.ClassPopulator.getDeclaredProperties(ClassPopulator.java:209)
    at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:84)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
    at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
    at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
    at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
    at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
    at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
    at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
    at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)

    .... more stacktrace same as above ....

    at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
    at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
    at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
    at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
    at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)
    at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
    at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
    at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
    at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
    at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)

lug 13, 2016 10:37:52 AM com.google.apphosting.utils.jetty.JettyLogger info
INFORMAZIONI: Started SelectChannelConnector@127.0.0.1:8888
lug 13, 2016 10:37:52 AM com.google.appengine.tools.development.JettyContainerService startHotDeployScanner
INFORMAZIONI: Full scan of the web app in place every 5s.
lug 13, 2016 10:37:54 AM com.google.appengine.tools.development.AbstractModule startup
INFORMAZIONI: Module instance default is running at http://localhost:8888/
lug 13, 2016 10:37:54 AM com.google.appengine.tools.development.AbstractModule startup
INFORMAZIONI: The admin console is running at http://localhost:8888/_ah/admin
lug 13, 2016 10:37:54 AM com.google.appengine.tools.development.DevAppServerImpl doStart
INFORMAZIONI: Dev App Server is now running

抱歉,我不得不缩短堆栈跟踪,但因此不接受超过 30k 个字符的文本

最佳答案

问题已经解决了

我有一个 Throwable 变量,Objectify 似乎无法很好地管理它。 如果它是非托管类型,我会抛出一个错误,stackoverflow 问题表明出现了意外情况。

我必须添加@Serialize才能使其正常工作,现在一切正常。

关于java - Objectify - 注册类期间出现 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38346851/

相关文章:

java - 在指定时间内有效的对象引用

c# - 这个尾部递归是否会导致堆栈溢出? C# .Net

java - 如何在 SQLite 中插入带撇号的名称

Java 面板重叠菜单

java - 开销与代码速度(java.io.File 数组与 java.lang.String 数组)

android - 如何从android接收和返回webapp2中的字符串?

python - Google API 的异步版本?

google-app-engine - 谷歌应用引擎是否支持环境变量?

C# - System.StackOverflowException 与 Lambda

java - StackOverflowError 异常破坏有趣和复杂的程序