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(a)yahoo.com> wrote:
From: Greg Barton <greg_barton(a)yahoo.com>
Subject: Re: [rules-users] Run Drool Application From Command Prompt
To: "Rules Users List" <rules-users(a)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(a)lntinfotech.com
<Pankaj.Jain(a)lntinfotech.com>
wrote:
> From: Pankaj.Jain(a)lntinfotech.com
<Pankaj.Jain(a)lntinfotech.com>
> Subject: Re: [rules-users] Run Drool Application From
Command Prompt
> To: rules-users(a)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(a)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(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users