[rules-users] Run Drool Application From Command Prompt

Greg Barton greg_barton at yahoo.com
Tue Jul 28 02:17:29 EDT 2009


heh.  I just remembered that Thread.currentThread().getContextClassLoader() can return null as well. :)  A good thing to do is have a utility function like the attached class loading utility class.  Rearrange the class loading order to suit your taste.

--- On Tue, 7/28/09, Greg Barton <greg_barton at yahoo.com> wrote:

> From: Greg Barton <greg_barton at yahoo.com>
> Subject: Re: [rules-users] Run Drool Application From Command Prompt
> To: "Rules Users List" <rules-users at lists.jboss.org>
> Date: Tuesday, July 28, 2009, 12:59 AM
> 
> It's unclear from your post when you get the NPE: from the
> command line, from eclipse, or when integrated with OFBiz.
> (I assume you're referring to http://ofbiz.apache.org/)
> 
> It's undoubtedly a classpath issue.  Just peek at the
> source a bit.  I'm not sure what version you're using,
> but if you look at the source in the svn repo you'll see
> that line 92 of JavaDialectConfiguration is this:
> 
> getClass().getClassLoader().loadClass(
> "org.eclipse.jdt.internal.compiler.Compiler" );
> 
> See the javadoc for Class.getClassLoader() that says
> "Returns the class loader for the class. Some
> implementations may use null to represent the bootstrap
> class loader. This method will return null in such
> implementations if this class was loaded by the bootstrap
> class loader."
> 
> So, it looks probable that in the environment that's having
> problems, the JavaDialectConfiguration class is loaded by
> the bootstrap classloader.  What is the VM
> implementation you're using?
> 
> It might be best if
> Thread.currentThread().getContextClassLoader() was used
> instead of getClass().getClassLoader() in
> JavaDialectConfiguration and elsewhere.  Devs, have an
> opinion on that?
> 
> --- On Mon, 7/27/09, Pankaj.Jain at lntinfotech.com
> <Pankaj.Jain at lntinfotech.com>
> wrote:
> 
> > From: Pankaj.Jain at lntinfotech.com
> <Pankaj.Jain at lntinfotech.com>
> > Subject: Re: [rules-users] Run Drool Application From
> Command Prompt
> > To: rules-users at lists.jboss.org
> > Date: Monday, July 27, 2009, 11:50 PM
> > 
> > 
> > Hi
> > 
> > 
> > 
> > I still have not got any
> > solution
> > of my problem that I posted previously. I have
> included all
> > required jar
> > files and set proper class path .. Please do help ?
> > 
> > 
> > 
> > problem: 
> > 
> > 
> > 
> > 
> > I am trying to
> > integrate Drool with
> > ofbiz and run application from command prompt. In one
> way I
> > have integrated
> > it properly and I am able to run it
> > successfully.
> > 
> > 
> > 
> > 
> > Code : Which I was using initially 
> > 
> > 
> > 
> > KnowledgeBuilder kbuilder =
> > KnowledgeBuilderFactory.newKnowledgeBuilder();
> > 
> > 
> > 
> > 
> > or 
> > 
> > 
> > 
> > PackageBuilderConfiguration cfg = new
> > PackageBuilderConfiguration();
> > 
> > 
> > KnowledgeBuilder kbuilder =
> > KnowledgeBuilderFactory.newKnowledgeBuilder();
> > 
> > 
> > 
> > 
> > Exception I got : 
> > 
> > 
> > 
> > org.drools.RuntimeDroolsException: Unable to load
> dialect
> >
> 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java
> > 
> > 
> >
> :org.drools.rule.builder.dialect.java.JavaDialectConfiguration'
> > 
> > 
> > at
> >
> org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:274)
> > at
> >
> org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:259)
> > 
> > 
> > 
> > 
> > at
> >
> org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:176)
> > at
> >
> org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:153)
> > at
> >
> org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:242)
> > 
> > 
> > . 
> > 
> > . 
> > 
> > . 
> > 
> > Caused by: java.lang.NullPointerException 
> > 
> > at
> >
> org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:92)
> > at
> >
> org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:55)
> > at
> >
> org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:270
> > 
> > 
> > 
> > 
> > Problem I found : 
> > 
> > In the class JavaDialectConfiguration in jar file
> > drools-compiler.jar there
> > is a method named "setCompliler",  in this
> > method Null Pointer
> > Exception was coming. 
> > 
> > 
> > 
> > Solution I provided :
> > 
> > 
> > In my application I created my custom class
> > CustomJavaDialectConfiguration
> > by extending to class JavaDialectConfiguration, In
> this
> > class I overrided
> > the method setCompiler. My method was exactly same as
> that
> > of method setCompiler
> > in JavaDialectConfiguration . To call my dialect class
> I
> > also overrided
> > the method "addDialect" of
> > PackageBuilderConfiguration class
> > . For that I created class
> > CustomPackageBuilderConfiguration by extending
> > to PackageBuilderConfiguration. 
> > 
> > after that I wrote the code: 
> > 
> > 
> > 
> > PackageBuilderConfiguration cfg = new
> > CustomPackageBuilderConfiguration();
> > 
> > 
> > KnowledgeBuilder kbuilder =
> > KnowledgeBuilderFactory.newKnowledgeBuilder(cfg);
> > 
> > 
> > 
> > 
> > 
> > 
> > Now application is running perfectly fine from both
> eclipse
> > and command
> > prompt without any exception. 
> > 
> > 
> > 
> > I want to know as my overrided method
> > "setCompiler" was exactly
> > same then why I had to override method, and In
> original
> > code (ie in drools-compiler.jar
> > file) why it was giving exception  ???  Was that
> > due to class
> > lader or something else ??  Please do help in this
> > regard ....
> > 
> > 
> > 
> > 
> >  
> > 
> > 
> > 
> > Thanks & Regards:
> > 
> > 
> > 
> > Pankaj Jain | L&T infotech |Navi Mumbai
> > 
> > Mobile: +91 9920218945
> > 
> > Email : pankaj.jain at lntinfotech.com
> > 
> > www.Lntinfotech.com
> > 
> > 
> > 
> > "Whatever the mind of man can conceive & believe,
> > it can achieve."
> > 
> > 
> > 
> > Larsen & Toubro Infotech Ltd.
> > 
> > www.Lntinfotech.com
> > 
> > 
> > 
> > This Document is classified as: 
> > 
> > 
> > 
> > L&T
> > Infotech Proprietary   L&T
> > Infotech Confidential   L&T
> > Infotech Internal Use Only   L&T
> > Infotech General Business   
> > 
> > 
> > 
> > This Email may contain confidential or privileged
> > information for the intended
> > recipient (s) If you are not the intended recipient,
> please
> > do not use
> > or disseminate the information, notify the sender and
> > delete it from your
> > system. 
> > 
> > 
> > 
> >
> ______________________________________________________________________
> > 
> > 
> > -----Inline Attachment Follows-----
> > 
> > _______________________________________________
> > rules-users mailing list
> > rules-users at 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
>


      
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ClassLoaderFu.java
Type: text/x-java
Size: 685 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/rules-users/attachments/20090727/759647e9/attachment.bin 


More information about the rules-users mailing list