aselab / scala-activerecord

ActiveRecord-like ORM library for Scala

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Using Tables in some package configuration problem

max-leuthaeuser opened this issue · comments

I want to use the Tables Object in some.package.models
instead of the default models.

My db application config looks like:

[... more ...]
dev {
  schema = "some.package.models.Tables"
  driver = "org.h2.Driver"
  jdbcurl = "jdbc:h2:mem:test"
  autoCreate = true
  autoDrop = true
  user=sa
  password=""
}
[... more ...]

Still it complains with:

java.lang.ClassNotFoundException: models.Tables$
     java.net.URLClassLoader$1.run(URLClassLoader.java:372)
     java.net.URLClassLoader$1.run(URLClassLoader.java:361)
     java.security.AccessController.doPrivileged(Native Method)
     java.net.URLClassLoader.findClass(URLClassLoader.java:360)
     java.lang.ClassLoader.loadClass(ClassLoader.java:424)
     java.lang.ClassLoader.loadClass(ClassLoader.java:357)
     com.github.aselab.activerecord.reflections.ReflectionUtil$class.loadClass(reflections.scala:192)
     com.github.aselab.activerecord.reflections.ReflectionUtil$.loadClass(reflections.scala:281)
     com.github.aselab.activerecord.reflections.ReflectionUtil$class.classToCompanion(reflections.scala:201)
     com.github.aselab.activerecord.reflections.ReflectionUtil$.classToCompanion(reflections.scala:281)
     com.github.aselab.activerecord.ActiveRecordTables$.find(ActiveRecordTables.scala:243)
     com.github.aselab.activerecord.ActiveRecordPlugin$$anonfun$activeRecordTables$3.apply(ActiveRecordPlugin.scala:9)
     com.github.aselab.activerecord.ActiveRecordPlugin$$anonfun$activeRecordTables$3.apply(ActiveRecordPlugin.scala:9)
     scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
     scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
     scala.collection.immutable.List.foreach(List.scala:381)
     scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
     scala.collection.immutable.List.map(List.scala:284)
     com.github.aselab.activerecord.ActiveRecordPlugin.activeRecordTables$lzycompute(ActiveRecordPlugin.scala:9)
     com.github.aselab.activerecord.ActiveRecordPlugin.activeRecordTables(ActiveRecordPlugin.scala:8)
     com.github.aselab.activerecord.ActiveRecordPlugin.onStart(ActiveRecordPlugin.scala:12)
     play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
     play.api.Play$$anonfun$start$1$$anonfun$apply$mcV$sp$1.apply(Play.scala:91)
     scala.collection.immutable.List.foreach(List.scala:381)
     play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:91)
     play.api.Play$$anonfun$start$1.apply(Play.scala:91)
     play.api.Play$$anonfun$start$1.apply(Play.scala:91)
     play.utils.Threads$.withContextClassLoader(Threads.scala:21)
     play.api.Play$.start(Play.scala:90)
     play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:157)
     play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130)
     scala.Option.map(Option.scala:145)
     play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130)
     play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128)
     scala.util.Success.flatMap(Try.scala:230)
     play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:128)
     play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:120)
     scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
     scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
     scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
     scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
     scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
     scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
     scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

What is going wrong here?

Alternative config might look like:

db.activerecord.driver=org.h2.Driver
db.activerecord.url="jdbc:h2:mem:play"
db.activerecord.user=sa
db.activerecord.password=""
schema.some.package.models.Tables=activerecord

But fails with:

play.api.UnexpectedException: Unexpected exception[ExceptionInInitializerError: null]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:170) ~[play_2.11-2.3.7.jar:2.3.7]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.7.jar:2.3.7]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.11.4.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130) ~[play_2.11-2.3.7.jar:2.3.7]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128) ~[play_2.11-2.3.7.jar:2.3.7]
Caused by: java.lang.ExceptionInInitializerError: null
    at sun.misc.Unsafe.ensureClassInitialized(Native Method) ~[na:1.8.0_20-ea]
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43) ~[na:1.8.0_20-ea]
    at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:142) ~[na:1.8.0_20-ea]
    at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1082) ~[na:1.8.0_20-ea]
    at java.lang.reflect.Field.getFieldAccessor(Field.java:1063) ~[na:1.8.0_20-ea]
Caused by: java.lang.NullPointerException: null
    at com.github.aselab.activerecord.Config$$anonfun$registerSchema$1.apply(ActiveRecordConfig.scala:55) ~[scala-activerecord_2.11-0.3.0.jar:0.3.0]
    at com.github.aselab.activerecord.Config$$anonfun$registerSchema$1.apply(ActiveRecordConfig.scala:55) ~[scala-activerecord_2.11-0.3.0.jar:0.3.0]
    at scala.collection.Iterator$class.foreach(Iterator.scala:743) ~[scala-library-2.11.4.jar:na]
    at scala.collection.AbstractIterator.foreach(Iterator.scala:1195) ~[scala-library-2.11.4.jar:na]
    at scala.collection.MapLike$DefaultValuesIterable.foreach(MapLike.scala:206) ~[scala-library-2.11.4.jar:na]

Thank you for your feedback. Sorry to be slow to reply.
In our environment, it was not able to to reproduce the bug...

Verification code is the following:
https://github.com/y-yoshinoya/scala-activerecord-issue58

Please compare it with your application source codes and settings.
We appreciate any feedback.

Thanks.