This is due to the plugin classloader since its parent class loader is the
main Thread classloader.
I would suggest to change the OServerPluginManager class line 303
pluginClassLoader = new URLClassLoader(new URL[] { url });
by
pluginClassLoader = new URLClassLoader(new URL[] { url },
OServerPlugin.class.getClassLoader ());
This will insure that orientdb will work in embedded mode using a different
classloader.
Le lundi 12 janvier 2015 08:55:53 UTC-8, Bertrand Quenin a écrit :
>
> Hi,
>
> I'm having trouble in play framework when trying to use the Lucene plugin.
> Here is what my Global.scala look like:
>
> import com.orientechnologies.orient.server.OServerMain
> import com.tinkerpop.blueprints.impls.orient.OrientGraphFactory
> import play.api._
>
> object Global extends GlobalSettings {
> val orientdb = OServerMain.create
> val factory = new OrientGraphFactory("plocal:databases/graphdb",
> "admin", "admin")
>
> override def onStart(app: Application) {
>
> orientdb.startup(getClass.getClassLoader.getResourceAsStream("orientdb-config.xml"))
> orientdb.activate
>
> factory.setAutoStartTx(false)
>
> Logger.info("Application has started")
> }
>
> override def onStop(app: Application) {
> orientdb.shutdown
>
> Logger.info("Application shutdown...")
> }
> }
>
> And here is the result:
>
> ->java.lang.NoClassDefFoundError:
> com/orientechnologies/orient/server/plugin/OServerPluginAbstract
> java.lang.ClassLoader.defineClass1(Native Method)
> java.lang.ClassLoader.defineClass(ClassLoader.java:760)
>
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
> java.net.URLClassLoader.defineClass(URLClassLoader.java:455)
> java.net.URLClassLoader.access$100(URLClassLoader.java:73)
> java.net.URLClassLoader$1.run(URLClassLoader.java:367)
> 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)
> java.lang.Class.forName0(Native Method)
> java.lang.Class.forName(Class.java:344)
>
> com.orientechnologies.orient.server.plugin.OServerPluginManager.startPluginClass(OServerPluginManager.java:254)
>
> com.orientechnologies.orient.server.plugin.OServerPluginManager.installDynamicPlugin(OServerPluginManager.java:343)
>
> com.orientechnologies.orient.server.plugin.OServerPluginManager.updatePlugin(OServerPluginManager.java:194)
>
> com.orientechnologies.orient.server.plugin.OServerPluginManager.updatePlugins(OServerPluginManager.java:283)
>
> com.orientechnologies.orient.server.plugin.OServerPluginManager.startup(OServerPluginManager.java:85)
>
> com.orientechnologies.orient.server.OServer.registerPlugins(OServer.java:820)
> com.orientechnologies.orient.server.OServer.activate(OServer.java:256)
> Global$.onStart(Global.scala:11)
> play.api.GlobalPlugin.onStart(GlobalSettings.scala:220)
>
> 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:383)
> 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)
>
> I'm not sure how to resolve this. It seems that there is some classloader
> magic failing here, but I'm puzzled on how to solve it.
>
> Thanks,
> BQ.
>
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.