[rules-users] Minimum jar set in 5.1.0.M2 contains lib/mvel2.jar - a show stopper for us

Edson Tirelli tirelli at post.com
Fri Jun 25 13:09:58 EDT 2010


   Yes, the only mandatory external dependency of drools-core/drools-api is
MVEL. No way around it, because we use MVEL internally for a few things,
even when the actual rules use java dialect.

   Edson

2010/6/25 Greg Barton <greg_barton at yahoo.com>

> It was my understanding that even if you set the dialect to java that mvel
> is still used to execute some LHS expressions.  (Except for code inside an
> accumulate expression.)  It's the RHS that is mainly affected.
>
> --- On *Fri, 6/25/10, Wolfgang Laun <wolfgang.laun at gmail.com>* wrote:
>
>
> From: Wolfgang Laun <wolfgang.laun at gmail.com>
> Subject: [rules-users] Minimum jar set in 5.1.0.M2 contains lib/mvel2.jar -
> a show stopper for us
> To: "Rules Users List" <rules-users at lists.jboss.org>
> Date: Friday, June 25, 2010, 3:05 AM
>
>
> I've read somewhere that the minimum jar set for execution with a
> precompiled .pkg is just
>    drools-api-5.1.0.M2.jar
>    drools-core-5.1.0.M2.jar
>
> However, trying to run an application with just a .pkg file, this jar set
> results in the stack
> dump shown below, due to a missing "org.mvel2..." class. Adding
> lib/mvel2-2.0.16.jar to the
> CLASSPATH fixes this, but (for reasons I don't care to elaborate here) be
> we can't have this
> in our application.
>
> Can this .jar be avoided?
>
> Note: I'm not using mvel, and the .drl file begins with "package movie;
> dialect "java".
>
> -W
>
>
> Exception in thread "main" java.lang.NoClassDefFoundError:
> org/mvel2/integration/impl/MapVariableResolverFactory
>     at java.lang.ClassLoader.defineClass1(Native Method)
>     at java.lang.ClassLoader.defineClass(ClassLoader.java:632)
>     at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>     at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
>     at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
>     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
>     at java.lang.Class.getDeclaredFields0(Native Method)
>     at java.lang.Class.privateGetDeclaredFields(Class.java:2308)
>     at java.lang.Class.getDeclaredField(Class.java:1897)
>     at
> java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1627)
>     at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:69)
>     at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:442)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:430)
>     at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:327)
>     at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:564)
>     at
> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1600)
>     at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1513)
>     at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749)
>     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
>     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
>     at java.util.HashMap.readObject(HashMap.java:1047)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)
>     at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865)
>     at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
>     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
>     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
>     at
> org.drools.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:41)
>     at
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1809)
>     at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1768)
>     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
>     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
>     at org.drools.rule.Package.readExternal(Package.java:198)
>     at
> org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:99)
>     at
> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1809)
>     at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1768)
>     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
>     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
>     at java.util.ArrayList.readObject(ArrayList.java:696)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:616)
>     at
> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)
>     at
> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865)
>     at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
>     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
>     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
>     at movie.Main.init(Main.java:40)
>     at movie.Main.main(Main.java:89)
> Caused by: java.lang.ClassNotFoundException:
> org.mvel2.integration.impl.MapVariableResolverFactory
>     at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
>     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
>     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
>     ... 60 more
>
>
>
> -----Inline Attachment Follows-----
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org<http://mc/compose?to=rules-users@lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100625/fb2ac834/attachment.html 


More information about the rules-users mailing list