[rules-users] Getting java.lang.NoSuchMethodError: org.drools.util.CompositeClassLoader.clone()Lorg/drools/util/CompositeClassLoader in drools webservice

Geoffrey De Smet ge0ffrey.spam at gmail.com
Wed Aug 8 04:01:00 EDT 2012


Put a breakpoint just before you call 
KnowledgeBuilderFactory.newKnowledgeBuilder()
and do
System.out.println(KnowledgeBuilderFactory.getClass().getPackage().getImplementationVersion());
System.out.println(CompositeClassLoader.getClass().getPackage().getImplementationVersion());

Instead of getImplementationVersion(), also try getSpecificationVersion().
If you use debug, there's a variable/method on that Package that will 
actually show you the filepath of the jar which defines it.

Op 07-08-12 17:21, pratibhapandey schreef:
> Hello Team,
> I am creating a web service in java using eclipse and axis2 which has some
> drools functionality in it.
>
> This is my drools class:
> public class LeverageDrools {
> 	
> 	public LeverageDrools(){
> 		
> 	}
> 	
> 	public List<List&lt;String>> findCorpLeverageName(List<LeverageBSLAData>
> lvgBsladataList) throws Exception{
> 		KnowledgeBase kbase = readKnowledgeBase();
> 		
> 		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
> 		KnowledgeRuntimeLogger logger =
> KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
> 		List<List&lt;String>> corpLevList = new ArrayList<List&lt;String>>();
> 		for(int i=0; i<lvgBsladataList.size();i++){
> 			LeverageBSLAData lvgBsladata = lvgBsladataList.get(i);
> 			lvgBsladata.setCorpLeverageName(&quot;&quot;);
> 			ksession.insert(lvgBsladata);
> 			ksession.fireAllRules();
> 			List&lt;String> bslaList = new ArrayList<String>();
> 			bslaList.add(lvgBsladata.getInvestmentNumber());
> 			bslaList.add(lvgBsladata.getCorpLeverageName());
> 			corpLevList.add(bslaList);
> 		}
> 		logger.close();
> 		
> 		
> 		return corpLevList;
> 	}
> 	
> 	
> 	private static KnowledgeBase readKnowledgeBase() throws Exception {
> 	   KnowledgeBuilder kbuilder =
> KnowledgeBuilderFactory.newKnowledgeBuilder();
>         DecisionTableConfiguration config =
> KnowledgeBuilderFactory.newDecisionTableConfiguration();
>         config.setInputType(DecisionTableInputType.XLS);
> 	
> //kbuilder.add(ResourceFactory.newClassPathResource("com/ge/re/leverage/drools/resources/LeverageTagging.drl"),
> ResourceType.DRL);
>        
> kbuilder.add(ResourceFactory.newClassPathResource("com/LeverageRuleSheet.xls"),
> ResourceType.DTABLE, config);
>         KnowledgeBuilderErrors errors = kbuilder.getErrors();
>         if (errors.size() > 0) {
>              for (KnowledgeBuilderError error: errors) {
>                  System.err.println(error);
>              }
>              throw new IllegalArgumentException("Could not parse
> knowledge.");
>          }
>          KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
>          kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
>          return kbase;
> 	}
>
>
> }
>
> and this is my POM:
>
> 	<dependency>
> 			<groupId>org.antlr</groupId>
> 			<artifactId>antlr-runtime</artifactId>
> 			<version>3.3</version>
> 			<scope>provided</scope>
>
> 		</dependency>
> 		<dependency>
> 			<groupId>org.drools</groupId>
> 			<artifactId>knowledge-api</artifactId>
> 			<version>5.4.0.Final</version>
> 			
> 		</dependency>
> 	
> 		<dependency>
> 			<groupId>org.drools</groupId>
> 			<artifactId>drools-core</artifactId>
> 			<version>5.4.0.Final</version>
> 			
> 		</dependency>
> 		<dependency>
> 			<groupId>org.drools</groupId>
> 			<artifactId>drools-compiler</artifactId>
> 			<version>5.4.0.Final</version>
> 			
>
> 		</dependency>
> 		<dependency>
> 			<groupId>org.drools</groupId>
> 			<artifactId>drools-jsr94</artifactId>
> 			<version>5.4.0.Final</version>
> 		</dependency>
>
> 		
> 		<dependency>
> 			<groupId>org.mvel</groupId>
> 			<artifactId>mvel2</artifactId>
> 			<version>2.1.0.drools16</version>
> 			
>
> 		</dependency>
>
> 		<dependency>
> 			<groupId>javax.rules</groupId>
> 			<artifactId>jsr94</artifactId>
> 			<version>1.4.2</version>
> 			<scope>provided</scope>
> 		</dependency>
> 		<dependency>
> 			<groupId>com.thoughtworks.xstream</groupId>
> 			<artifactId>xstream</artifactId>
> 			<version>1.3.1</version>
> 			
> 		</dependency>
>
> 		<dependency>
> 			<groupId>net.sourceforge.jexcelapi</groupId>
> 			<artifactId>jxl</artifactId>
> 			<version>2.6.10</version>
> 		
> 		</dependency>
>
>
> The build is fine and service also deploys well. but when I try to access
> the service from a client, I get the following error on:
>
> 20:30:33,105 INFO  [STDOUT] [ERROR]
> org.drools.util.CompositeClassLoader.clone()Lorg/drools/util/CompositeClassLoader;
> java.lang.NoSuchMethodError:
> org.drools.util.CompositeClassLoader.clone()Lorg/drools/util/CompositeClassLoader;
> 	at
> org.drools.compiler.PackageBuilderConfiguration.getClassLoader(PackageBuilderConfiguration.java:358)
> 	at
> org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:94)
> 	at
> org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:57)
> 	at
> org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:309)
> 	at
> org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:298)
> 	at
> org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:187)
> 	at
> org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:165)
> 	at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:301)
> 	at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:229)
> 	at
> org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl.newKnowledgeBuilder(KnowledgeBuilderFactoryServiceImpl.java:34)
> 	at
> org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:47)
>
>
>
> the error is coming on  KnowledgeBuilder kbuilder =
> KnowledgeBuilderFactory.newKnowledgeBuilder(); this line..
>
> Please help as this is an urgent issue.
>
>
>
> --
> View this message in context: http://drools.46999.n3.nabble.com/Getting-java-lang-NoSuchMethodError-org-drools-util-CompositeClassLoader-clone-Lorg-drools-util-Compe-tp4019045.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>

-- 
With kind regards,
Geoffrey De Smet




More information about the rules-users mailing list