実行時にスカラクラスを読み込みたいのですが、そのクラスは私のscalaプロジェクトの中にあります。 はより正確には、私のプロジェクトのルートフォルダに、私はTmpCaseClass.scalaを持っている:実行時にスカラプロジェクトでクラスを読み込みます。
class TmpHBaseCaseClass(val adresse:String,val age:Int,val nom:String,val id:Int,val salaire:Float)
私はそれをコンパイルし、このようにツールボックスを使用して実行時にそれを使用したいと思います:
val tb = universe.runtimeMirror(getClass.getClassLoader).mkToolBox()
val clazz = tb.compile(tb.parse("./TmpCaseClass.scala"))().asInstanceOf[Class[_]]
val ctor = clazz.getDeclaredConstructors()(0)
val instance = ctor.newInstance()
Exception in thread "main" scala.tools.reflect.ToolBoxError: reflective compilation has failed:
illegal start of definition at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal.throwIfErrors(ToolBoxFactory.scala:316) at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$ToolBoxGlobal.parse(ToolBoxFactory.scala:291) at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$$anonfun$parse$1.apply(ToolBoxFactory.scala:417) at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$$anonfun$parse$1.apply(ToolBoxFactory.scala:414) at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$withCompilerApi$.liftedTree2$1(ToolBoxFactory.scala:355) at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl$withCompilerApi$.apply(ToolBoxFactory.scala:355) at scala.tools.reflect.ToolBoxFactory$ToolBoxImpl.parse(ToolBoxFactory.scala:414) at Main$.delayedEndpoint$Main$1(Main.scala:17) at Main$delayedInit$body.apply(Main.scala:13) at scala.Function0$class.apply$mcV$sp(Function0.scala:34) at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) at scala.App$$anonfun$main$1.apply(App.scala:76) at scala.App$$anonfun$main$1.apply(App.scala:76) at scala.collection.immutable.List.foreach(List.scala:381) at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) at scala.App$class.main(App.scala:76) at Main$.main(Main.scala:13) at Main.main(Main.scala)
(エラーが発生した)ライン17に対応しています:
0123しかし、私はfollwingエラーが発生しましたval clazz = tb.compile(tb.parse("./TmpCaseClass.scala"))().asInstanceOf[Class[_]]
どうすればこのエラーを取り除くことができますか?
私はもうエラーはありませんが、今は何をすべきか分かりません。私はinstance.getClass.getFields.foreach(x => println(x.getName))を実行しましたが、何も表示されません。私はちょうどビルドしたオブジェクトを使う方法を知らない。 –