0

環境: play-1.2.5

Play フレームワーク アプリケーションを起動するときにデータベースにデータを配置する必要があるため、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 行未満の場合は問題なくフレームワークが開始されますが、コードの長さが 3000 行を超えると例外が発生しました。

以下は例外のログです。前もって感謝します。

14:42:20,855 警告 ~ 実行中です Play! DEV モードで
14:42:21,023 INFO ~ ポート 9000 で HTTP をリッスンしています (最初のリクエストの開始を待っています) ...

14:42:35,275 エラー ~


@6edp5mkl9

リクエスト GET の内部サーバー エラー (500) /


おっと: UnexpectedException


例外 UnexpectedException: While apply class play.classloading.enhancers.PropertiesEnhancer on Bootstrapによる予期しないエラーが発生しました


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) で

at {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.(行: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 Request(プレイ!)

原因: play.exceptions.UnexpectedException: クラス play.classloading.enhancers.PropertiesEnhancer を Bootstrap に適用中

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