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