0

I just start learn Drools, and I met a problem.

I am working on a project that involves Java 7 and Drools 6.3.0.Final. I want load rules by KieScanner, the rule jar is droolsrules-1.0.0-RELEASE.jar:

        KieServices ks = KieServices.Factory.get();
        ReleaseId releaseId = ks.newReleaseId("com.ericsson", "droolsrules", "1.0.0-Final");
        KieContainer kc = ks.newKieContainer( releaseId );
        KieScanner kScanner = ks.newKieScanner(kc);

        // Start the KieScanner polling the Maven repository every 10 seconds
        kScanner.start(10000L);

        KieSession ksession = kc.newKieSession("GeelyKS");
        QueryResults qr = null;

        while(true){
            System.out.print("Please enter Param:");
            s = br.readLine();

            if(s == null || s.trim().length() == 0){
                continue;
            }

            if (!s.equals("exit")) {
                String[] ss = s.split(",");

                Param param = new Param();
                param.setName(ss[0]);
                param.setValue(ss[1]);
                param.setAction(ss[2]);

                ksession.insert(param);
                ksession.fireAllRules();

                qr = ksession.getQueryResults("query fact count");
                System.out.println("param project count:" + qr.size());

when I run the project,i came across the following error:

java.lang.RuntimeException: org.kie.scanner.embedder.MavenEmbedderException: Failed to read artifact descriptor for org.kie:kie-api:jar:6.3.0.Final
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:57)
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:49)
at org.kie.scanner.ArtifactResolver.getResolverFor(ArtifactResolver.java:127)
at org.kie.scanner.ArtifactResolver.getResolverFor(ArtifactResolver.java:90)
at org.kie.scanner.KieRepositoryScannerImpl.setKieContainer(KieRepositoryScannerImpl.java:88)
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieScanner(KieServicesImpl.java:139)
at com.ericsson.geely.service.impl.ParamServiceImpl.alarmTest(ParamServiceImpl.java:32)
at com.ericsson.geely.main.AppMain.main(AppMain.java:18)
Caused by: org.kie.scanner.embedder.MavenEmbedderException: Failed to read artifact descriptor for org.kie:kie-api:jar:6.3.0.Final
at org.kie.scanner.embedder.MavenEmbedder.readProject(MavenEmbedder.java:276)
at org.kie.scanner.embedder.MavenProjectLoader.parseMavenPom(MavenProjectLoader.java:55)
... 7 more
Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.kie:kie-api:jar:6.3.0.Final
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:384)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:231)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:525)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:509)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:409)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:363)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:351)
at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:254)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:316)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:159)
at org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:202)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:175)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:114)
at org.kie.scanner.embedder.MavenEmbedder.readProject(MavenEmbedder.java:271)
... 8 more

When I don't use KieScanner, it can work well.
How can I fix it?

cassiomolin
  • 124,154
  • 35
  • 280
  • 359
TXG
  • 21
  • 2
  • The Drools documentation said "The KieScanner will only pickup changes to deployed jars if it is using a SNAPSHOT, version range, the LATEST, or the RELEASE setting. Fixed versions will not automatically update at runtime." . I have tried the SNAPSHOT , it doesn't work either. – TXG Oct 22 '15 at 10:42
  • [This question](http://stackoverflow.com/questions/6642146/maven-failed-to-read-artifact-descriptor) may help. – Daniël J Oct 22 '15 at 10:59
  • @TXG I am also facing the same issue while running KieBuilder.buildAll in rule engine. I am using drools 6.3.0.Final-redhat-5 version. – Kumar Feb 03 '16 at 05:02

1 Answers1

0

It looks like the jar file you specified "droolsrules-1.0.0-RELEASE.jar" has a different version stamp on it than what your code is trying to retrieve: "1.0.0-Final". Does the version really match up?

You might try specifying a version range to KIE instead of a specific version. I think the KieScanner won't resolve a specific Release version. You can use a SNAPSHOT version, LATEST, RELEASE, or a range like [1.0.0-FINAL, 1.1.0)

whomer
  • 575
  • 9
  • 21