環境: 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 以上