Thanks. Sorry for few details as this has been a several message question. I have created a Drools plugin that contains EITHER the maximum number of jars and dependencies (i.e. ALL), or the minimum (i.e. those needed for compiler option only processing DRL files), or adding the entire Drools distribution to my Java extensions folder in OS X, and in all instances, I get an error loading dialects. The enigma for me is that all of these plugin options enable me to make a stand alone RCP application that works fine.
@BeforeClass
public static void setUp() throws Exception {
Reader source;
PackageBuilderConfiguration pkgConfig = new PackageBuilderConfiguration();
JavaDialectConfiguration javaDialectConf = (JavaDialectConfiguration) pkgConfig.getDialectConfiguration("java");
javaDialectConf.setCompiler(JavaDialectConfiguration.ECLIPSE);
final PackageBuilder builder = new PackageBuilder(pkgConfig);
boolean exists = (new File("rules/GlucoseDroolRules00.drl")).exists();
if (exists) {
builder.addPackageFromDrl(new FileReader(
"rules/GlucoseDroolRules00.drl"));
System.out.println("Found the file!");
} else {
System.out.println("Cannot locate the file - will try as resource");
source = new InputStreamReader(AllDroolsRulesTests.class
.getResourceAsStream("rules/GlucoseDroolRules00.drl"));
builder.addPackageFromDrl(source);
}
if (builder.hasErrors()) {
System.out.println(builder.getErrors().toString());
}
Package pkg = builder.getPackage();
ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage(pkg);
}
It crashes in the line trying to instantiate the package configuration. If I eliminate the lines that configure the package, and invoke the package building without an argument (the default), then the crash occurs in that line. The crash trace:
org.drools.RuntimeDroolsException: Unable to load dialect 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java'
at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:152)
at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:140)
at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:117)
at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:94)
at droolsRules.tests.AllDroolsRulesTests.setUp(AllDroolsRulesTests.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74)
at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.lang.NullPointerException
at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:146)
... 18 more
This trace is identical in all instances. I have looked at the source code and it appears that the Drools code is looking for the drools configuration file, and I am not sure if this is included in the classpath when running JUnit. However, the minimal and maximal plugin configurations make an RCP run perfectly as a standalone application.
This is Eclipse 3.3 fall version, Mac OXX Leopard (but have run on Tiger and same error, so not a new Apple bug), Drools 4.03, and JUnit 4.
Thanks.