0

环境:play-1.2.5

我需要在启动播放框架应用程序时将数据放入数据库,所以我让它在 Bootstrap.java 中完成。

基本上,我只是调用一个模型并为其新建一个实例并将数据重复存储到数据库中。如下所示。

{
  MagazineType magazineType = new MagazineType();
  magazineType.abbreviation = "XX";
  magazineType.save();

  {
    {
      MagazineTypeFirstCat magazineTypeFirstCat = new MagazineTypeFirstCat();
      magazineTypeFirstCat.name = "XX_First";
      magazineTypeFirstCat.magazineType = magazineType;
      magazineTypeFirstCat.save();

      {
        {
          MagazineTypeSecondCat magazineTypeSecondCat = new MgazineTypeSecondCat();
          magazineTypeSecondCat.name = "XX_Second_1";
          magazineTypeSecondCat.magazineTypeFirstCat = magazineTypeFirstCat;
          magazineTypeSecondCat.save();
        }

        {
          MagazineTypeSecondCat magazineTypeSecondCat = new MgazineTypeSecondCat();
          magazineTypeSecondCat.name = "XX_Second_2";
          magazineTypeSecondCat.magazineTypeFirstCat = magazineTypeFirstCat;
          magazineTypeSecondCat.save();
        }
      }
    }
  }
}

但是数据量很大,所以 Bootstrap.java 中的代码长度超过 5000 行。

当代码长度在3000行以下时,flamework会正常启动,但如果代码长度超过3000行,就会出现异常。

以下是异常的日志,任何建议将不胜感激。提前致谢。

14:42:20,855 WARN ~ 你正在运行 Play!在 DEV 模式
14:42:21,023 INFO ~ 在端口 9000 上侦听 HTTP(等待第一个请求开始)...

14:42:35,275 错误~


@6edp5mkl9

请求 GET / 的内部服务器错误 (500)


糟糕:意外异常

由异常 UnexpectedException 引起的意外错误:
在 Bootstrap 上应用类 play.classloading.enhancers.PropertiesEnhancer 时


play.exceptions.UnexpectedException:在 Bootstrap 上应用 play.CorePlugin@1f0b7d3 时

在 play.plugins.PluginCollection.enhance(PluginCollection.java:454)

在 play.classloading.ApplicationClasses$ApplicationClass.enhance (ApplicationClasses.java:208)

在 play.classloading.ApplicationClassloader.loadApplicationClass(ApplicationClassloader.java:157)

在 play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:417)

在 play.classloading.ApplicationClassloader.getAssignableClasses(ApplicationClassloader.java:441)

在 {module:crud}/app/views/tags/crud/types.tag.(line:3)

在 play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:229)

在 play.templates.GroovyTemplate$ExecutableTemplate.invokeTag(GroovyTemplate.java:374)

在 {module:crud}/conf/routes.(line:4)

在 play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:229)

在 play.templates.Template.render(Template.java:26)

在 play.templates.GroovyTemplate.render(GroovyTemplate.java:184)

在 play.mvc.Router.parse(Router.java:162)

在 play.mvc.Router.parse(Router.java:190)

在 play.mvc.Router.parse(Router.java:164)

在 play.mvc.Router.load(Router.java:50)

在 play.mvc.Router.detectChanges(Router.java:219)

在 Invocation.HTTP 请求(播放!)

引起:play.exceptions.UnexpectedException:在 Bootstrap 上应用类 play.classloading.enhancers.PropertiesEnhancer 时

在 play.CorePlugin.enhance(CorePlugin.java:296)

在 play.plugins.PluginCollection.enhance(PluginCollection.java:451)

在 play.classloading.ApplicationClasses$ApplicationClass.enhance(ApplicationClasses.java:208)

在 play.classloading.ApplicationClassloader.loadApplicationClass(ApplicationClassloader.java:157)

在 play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:417)

在 play.classloading.ApplicationClassloader.getAssignableClasses(ApplicationClassloader.java:441)

在 org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:229)

在 org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)

在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)

在 Template_1001$_run_closure1.doCall(types.tag:6)

在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)

在 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)

在 org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:273)

在 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)

在 org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)

在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)

在 Template_1001$_run_closure1.doCall(types.tag)

在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)

在 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)

在 org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod (ClosureMetaClass.java:273)

在 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)

在 groovy.lang.Closure.call(Closure.java:282)

在 groovy.lang.Closure.call(Closure.java:277)

在 org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:99)

在 org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.access$300(GroovyCategorySupport.java:61)

在 org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:239)

在 org.codehaus.groovy.runtime.DefaultGroovyMethods.use(DefaultGroovyMethods.java:333)

在 org.codehaus.groovy.runtime.dgm$717.invoke(未知来源)

在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoMetaMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:307)

在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:51)

在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)

在 Template_1001.run(types.tag:2)

在 play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:229)

在 play.templates.GroovyTemplate$ExecutableTemplate.invokeTag(GroovyTemplate.java:374)

在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)

在 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)

在 org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:362)

在 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)

在 org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)

在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:161)

在 Template_1000$_run_closure1.doCall(路线:41)

在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)

在 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)

在 org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:273)

在 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)

在 org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)

在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)

在 Template_1000$_run_closure1.doCall(路由)

在 org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)

在 groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)

在 org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:273)

在 groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)

在 groovy.lang.Closure.call(Closure.java:282)

在 groovy.lang.Closure.call(Closure.java:277)

在 org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:99)

在 org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.access$300(GroovyCategorySupport.java:61)

在 org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:239)

在 org.codehaus.groovy.runtime.DefaultGroovyMethods.use(DefaultGroovyMethods.java:333)

在 org.codehaus.groovy.runtime.dgm$717.invoke(未知来源)

在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoMetaMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:307)

在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:51)

在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)

在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:153)

在 Template_1000.run(路线:2)

... 9 更多

引起:javassist.CannotCompileException:无效的操作码地址

在 javassist.expr.ExprEditor.doit(ExprEditor.java:116)

在 javassist.CtBehavior.instrument(CtBehavior.java:618)

在 play.classloading.enhancers.PropertiesEnhancer.enhanceThisClass(PropertiesEnhancer.java:130)

在 play.CorePlugin.enhance(CorePlugin.java:293)

... 83 更多

引起:javassist.bytecode.BadBytecode:操作码地址无效

在 javassist.bytecode.CodeIterator.nextOpcode(CodeIterator.java:586)

在 javassist.bytecode.CodeIterator.next(CodeIterator.java:157)

在 javassist.bytecode.stackmap.Liveness.analyze(Liveness.java:237)

在 javassist.bytecode.stackmap.Liveness.computeUsage(Liveness.java:216)

在 javassist.bytecode.stackmap.Liveness.compute(Liveness.java:38)

在 javassist.bytecode.stackmap.TypedBlock.makeBlocks(TypedBlock.java:54)

在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:91)

在 javassist.bytecode.MethodInfo.rebuildStackMap(MethodInfo.java:404)

在 javassist.bytecode.MethodInfo.rebuildStackMapIf6(MethodInfo.java:389)

在 javassist.expr.ExprEditor.doit(ExprEditor.java:112)

... 86 更多

4

1 回答 1

3

Java 类大小限制为 64 kb,因此您的类可能太大。

对于这样的用例,我更喜欢将所有 thi 初始化放在一个 sql 文件中并在引导程序中使用 sql 加载脚本,它可以更好地扩展。

于 2013-05-29T06:41:22.083 回答