Using Tables in some package configuration problem
max-leuthaeuser opened this issue · comments
Max Leuthäuser commented
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?
Max Leuthäuser commented
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]
Yuki Yoshinoya commented
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.