I've read somewhere that the minimum jar set for execution with a precompiled .pkg is just<br> drools-api-5.1.0.M2.jar<br> drools-core-5.1.0.M2.jar<br><br>However, trying to run an application with just a .pkg file, this jar set results in the stack<br>
dump shown below, due to a missing "org.mvel2..." class. Adding lib/mvel2-2.0.16.jar to the<br>CLASSPATH fixes this, but (for reasons I don't care to elaborate here) be we can't have this<br>in our application. <br>
<br>Can this .jar be avoided? <br><br>Note: I'm not using mvel, and the .drl file begins with "package movie; dialect "java".<br><br>-W<br><br><br>Exception in thread "main" java.lang.NoClassDefFoundError: org/mvel2/integration/impl/MapVariableResolverFactory<br>
at java.lang.ClassLoader.defineClass1(Native Method)<br> at java.lang.ClassLoader.defineClass(ClassLoader.java:632)<br> at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)<br> at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)<br>
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)<br> at java.net.URLClassLoader$1.run(URLClassLoader.java:212)<br> at java.security.AccessController.doPrivileged(Native Method)<br> at java.net.URLClassLoader.findClass(URLClassLoader.java:205)<br>
at java.lang.ClassLoader.loadClass(ClassLoader.java:319)<br> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)<br> at java.lang.ClassLoader.loadClass(ClassLoader.java:264)<br> at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)<br>
at java.lang.Class.getDeclaredFields0(Native Method)<br> at java.lang.Class.privateGetDeclaredFields(Class.java:2308)<br> at java.lang.Class.getDeclaredField(Class.java:1897)<br> at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1627)<br>
at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:69)<br> at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:442)<br> at java.security.AccessController.doPrivileged(Native Method)<br> at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:430)<br>
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:327)<br> at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:564)<br> at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1600)<br>
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1513)<br> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749)<br> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)<br>
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)<br> at java.util.HashMap.readObject(HashMap.java:1047)<br> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br> at java.lang.reflect.Method.invoke(Method.java:616)<br> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)<br>
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865)<br> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)<br> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)<br>
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)<br> at org.drools.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:41)<br> at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1809)<br>
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1768)<br> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)<br> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)<br>
at org.drools.rule.Package.readExternal(Package.java:198)<br> at org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:99)<br> at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1809)<br>
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1768)<br> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)<br> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)<br>
at java.util.ArrayList.readObject(ArrayList.java:696)<br> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
at java.lang.reflect.Method.invoke(Method.java:616)<br> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)<br> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865)<br> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)<br>
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)<br> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)<br> at movie.Main.init(Main.java:40)<br> at movie.Main.main(Main.java:89)<br>
Caused by: java.lang.ClassNotFoundException: org.mvel2.integration.impl.MapVariableResolverFactory<br> at java.net.URLClassLoader$1.run(URLClassLoader.java:217)<br> at java.security.AccessController.doPrivileged(Native Method)<br>
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)<br> at java.lang.ClassLoader.loadClass(ClassLoader.java:319)<br> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)<br> at java.lang.ClassLoader.loadClass(ClassLoader.java:264)<br>
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)<br> ... 60 more<br><br><br>