ClassNotFoundException for a class in added dependency, when built outside Drools WB

244 views
Skip to first unread message

murali mohan

unread,
Jun 14, 2016, 11:51:11 AM6/14/16
to Drools Usage
Hello,

This is a difficult one to explain, I will try my best. Please give me directions to proceed and debug. A reproducer for this, is something I don't know how to create.

Drools version: 6.3.0.Final, deployed in Tomcat 7.

All working Scenario
  1. KieSession1/KieBase1 has dependency on , for example, domain.jar which has, for example, A.class
  2. KieSession1/KieBase1 built from Drools WB
  3. KieBase2 includes KieBase1 and built from Drools WB
  4. No issues - build and deploy successful

We want to move KieBase1 project outside Drools WB and we are now building outside WB using maven. After this, KieBase2 build fails with ClassNotFoundException for A.class


Failing Scenario

  1. KieSession1/KieBase1 has dependency on domain.jar which has, for example A.class
  2. KieSession1/KieBase1 built from Maven (There is a slight difference in pom.xml which is explained below)
  3. KieBase2 includes KieBase1 and built from Drools WB
  4. Build fails - ClassNotFoundException for A.class
  5. Build fails even if I add domain.jar as dependency for the project for KieBase2

My observations

  1. There is a difference in pom.xml outside WB. This is mainly the following bit which I have added for validation of decision tables:
  2.         <dependency>
               
    <groupId>org.drools</groupId>
               
    <artifactId>drools-decisiontables</artifactId>
           
    </dependency>
    .
    .
       
    <build>
           
    <plugins>
               
    <plugin>
                   
    <groupId>org.kie</groupId>
                   
    <artifactId>kie-maven-plugin</artifactId>
                   
    <extensions>true</extensions>
                   
    <executions>
                       
    <execution>
                           
    <id>brms-rules-compilation</id>
                           
    <phase>generate-resources</phase>
                           
    <goals>
                               
    <goal>build</goal>
                           
    </goals>
                       
    </execution>
                   
    </executions>
               
    </plugin>
               
    <plugin>
                   
    <groupId>org.apache.maven.plugins</groupId>
                       
    <artifactId>maven-install-plugin</artifactId>
                       
    <executions>
                           
    <execution>
                       
    <id>install</id>
                       
    <phase>verify</phase>
                       
    <goals>
                             
    <goal>install</goal>
                           
    </goals>
                     
    </execution>
                       
    </executions>
               
    </plugin>
           
    </plugins>
       
    </build>


  3. Have compared the META-INF folder of both jars (one built ouside WB and the second built by WB), it seems to have all the same folders and files. I can send these individually to anyone who can help. Not posting here, as it is a public forum.
  4. A minor difference I noticed in the kmodule.xml files in the jars are that, the one built by WB has " beliefSystem="simple" scope="javax.enterprise.context.ApplicationScoped" ", for ksession tag. These attributes are missing from the file in jar built outside maven


StackTrace from catalina.out

Enter code here...java.lang.ClassNotFoundException: Unable to find class 'A.class'
    at org
.drools.core.base.ClassTypeResolver.resolveType(ClassTypeResolver.java:241)
    at org
.drools.core.base.ClassTypeResolver.resolveType(ClassTypeResolver.java:130)
    at org
.drools.compiler.builder.impl.KnowledgeBuilderImpl.processGlobals(KnowledgeBuilderImpl.java:1602)
    at org
.drools.compiler.builder.impl.KnowledgeBuilderImpl.processOtherDeclarations(KnowledgeBuilderImpl.java:1575)
    at org
.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.buildOtherDeclarations(CompositeKnowledgeBuilderImpl.java:247)
    at org
.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.buildPackages(CompositeKnowledgeBuilderImpl.java:118)
    at org
.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:104)
    at org
.drools.compiler.kie.builder.impl.AbstractKieModule.buildKnowledgePackages(AbstractKieModule.java:240)
    at org
.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:64)
    at org
.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:229)
    at org
.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieModule(KieBuilderImpl.java:221)
    at org
.kie.scanner.KieRepositoryScannerImpl.build(KieRepositoryScannerImpl.java:220)
    at org
.kie.scanner.KieRepositoryScannerImpl.buildArtifact(KieRepositoryScannerImpl.java:170)
    at org
.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:126)
    at org
.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:121)
    at org
.drools.compiler.kie.builder.impl.KieRepositoryImpl.loadKieModuleFromMavenRepo(KieRepositoryImpl.java:129)
    at org
.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:115)
    at org
.drools.compiler.kie.builder.impl.KieBuilderImpl.init(KieBuilderImpl.java:147)
    at org
.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:168)
    at org
.drools.compiler.kie.builder.impl.KieBuilderImpl.getKieModule(KieBuilderImpl.java:388)
    at org
.drools.compiler.kie.builder.impl.KieBuilderImpl.getKieModuleIgnoringErrors(KieBuilderImpl.java:383)
    at org
.kie.workbench.common.services.backend.builder.Builder.build(Builder.java:204)
    at org
.kie.workbench.common.services.backend.builder.BuildServiceImpl.doBuild(BuildServiceImpl.java:174)
    at org
.kie.workbench.common.services.backend.builder.BuildServiceImpl.build(BuildServiceImpl.java:85)
    at org
.kie.workbench.common.services.backend.builder.BuildServiceImpl$Proxy$_$$_WeldClientProxy.build(BuildServiceImpl$Proxy$_$$_WeldClientProxy.java)
    at sun
.reflect.GeneratedMethodAccessor222.invoke(Unknown Source)
    at sun
.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java
.lang.reflect.Method.invoke(Method.java:606)
    at org
.jboss.errai.bus.server.io.AbstractRPCMethodCallback.invokeMethodFromMessage(AbstractRPCMethodCallback.java:48)
    at org
.jboss.errai.bus.server.io.ValueReplyRPCEndpointCallback.callback(ValueReplyRPCEndpointCallback.java:22)
    at org
.jboss.errai.bus.server.io.RemoteServiceCallback.callback(RemoteServiceCallback.java:54)
    at org
.jboss.errai.cdi.server.CDIExtensionPoints$2.callback(CDIExtensionPoints.java:396)
    at org
.jboss.errai.bus.server.DeliveryPlan.deliver(DeliveryPlan.java:47)
    at org
.jboss.errai.bus.server.ServerMessageBusImpl.sendGlobal(ServerMessageBusImpl.java:296)
    at org
.jboss.errai.bus.server.SimpleDispatcher.dispatchGlobal(SimpleDispatcher.java:46)
    at org
.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:97)
    at org
.jboss.errai.bus.server.service.ErraiServiceImpl.store(ErraiServiceImpl.java:114)
    at org
.jboss.errai.bus.server.servlet.DefaultBlockingServlet.doPost(DefaultBlockingServlet.java:142)
    at javax
.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at javax
.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org
.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org
.uberfire.ext.security.server.SecureHeadersFilter.doFilter(SecureHeadersFilter.java:53)
    at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org
.uberfire.ext.security.server.SecurityIntegrationFilter.doFilter(SecurityIntegrationFilter.java:45)
    at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org
.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org
.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org
.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org
.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
    at org
.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org
.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org
.kie.integration.tomcat.JACCValve.invoke(JACCValve.java:101)
    at org
.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    at org
.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org
.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org
.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org
.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org
.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java
.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java
.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org
.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java
.lang.Thread.run(Thread.java:745)



murali mohan

unread,
Jun 15, 2016, 9:27:34 AM6/15/16
to Drools Usage
Can anybody please help?
Reply all
Reply to author
Forward
0 new messages