Janino NoClassDefFoundError on CompileException

1,445 views
Skip to first unread message

Felix

unread,
Mar 12, 2013, 12:46:32 PM3/12/13
to cascadi...@googlegroups.com
I am not sure if this is the right place for it but since cascading uses janino

Caused by: java.lang.NoClassDefFoundError: org/codehaus/janino/CompileException
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at org.drools.commons.jci.compilers.JavaCompilerFactory.createCompiler(JavaCompilerFactory.java:73)
	at org.drools.rule.builder.dialect.java.JavaDialect.loadCompiler(JavaDialect.java:629)
	at org.drools.rule.builder.dialect.java.JavaDialect.<init>(JavaDialect.java:190)
	at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.newDialect(JavaDialectConfiguration.java:71)
	at org.drools.compiler.PackageBuilderConfiguration.buildDialectRegistry(PackageBuilderConfiguration.java:337)
	at org.drools.compiler.PackageRegistry.<init>(PackageRegistry.java:28)
	at org.drools.compiler.PackageBuilder.newPackage(PackageBuilder.java:1252)
	at org.drools.compiler.PackageBuilder.initPackageRegistry(PackageBuilder.java:918)
	at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:863)
	at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:466)
	at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:694)
	at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:51)
	at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:40)
	at com.fink.drools.KnowledgeBaseBuilder.buildKnowledgeBase(KnowledgeBaseBuilder.java:31)
	at com.fink.buffer.ProfileClassficationBuffer.operate(ProfileClassficationBuffer.java:57)
	at cascading.flow.stream.BufferEveryWindow.receive(BufferEveryWindow.java:143)

The version of Janino that drools seems to work with is 2.5.16 where the CompileException Class is bundled with the jar. The version of the Janino that cascading 2.6.1 refactored those classes into its own jar under commons-compiler and I am Using drools 5.5.0-Final.  I am wondering if anyone have ran into this problem before and how to resolve this. 

Ken Krugler

unread,
Mar 12, 2013, 1:26:22 PM3/12/13
to cascadi...@googlegroups.com
I'd run into this issue accidentally in the past, where I had both cascading-core 2.0.4 (Janino 2.5.16) and cascading-core-2.1.0-tests (Janino 2.6.1) on the classpath.

Unfortunately there were some breaking changes between Janino 2.5 and 2.6, so I think it would be hard to make code work with either version. I'd say stick with Cascading 2.0, or figure out how to re-build Drools so it works with Janino 2.6

I did see one post on Drools that implies you can select which compiler to use, and the Eclipse compiler is an option, so that might work as well. Check out http://stackoverflow.com/questions/11872328/drools-hello-world-maven-dependencies

-- Ken

--------------------------
Ken Krugler
custom big data solutions & training
Hadoop, Cascading, Cassandra & Solr





Felix

unread,
Mar 12, 2013, 1:44:14 PM3/12/13
to cascadi...@googlegroups.com
Ken,

Thanks for the info.  The reason I moved to Janino is to take advantage of the jar that is already packaged with cascading but since this is not a good option I have tried to include the eclipse compiler for drools but I ran into an other problem
Caused by: java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/CategorizedProblem;
at org.drools.commons.jci.compilers.EclipseJavaCompiler$3.acceptResult(EclipseJavaCompiler.java:359)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:335)
at org.drools.commons.jci.compilers.EclipseJavaCompiler.compile(EclipseJavaCompiler.java:389)
at org.drools.commons.jci.compilers.AbstractJavaCompiler.compile(AbstractJavaCompiler.java:49)
at org.drools.rule.builder.dialect.java.JavaDialect.compileAll(JavaDialect.java:408)
at org.drools.compiler.DialectCompiletimeRegistry.compileAll(DialectCompiletimeRegistry.java:46)
at org.drools.compiler.PackageRegistry.compileAll(PackageRegistry.java:102)
at org.drools.compiler.PackageBuilder.compileAll(PackageBuilder.java:1046)
at org.drools.compiler.PackageBuilder.compileAllRules(PackageBuilder.java:882)
at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:871)
at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:466)
at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:694)
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:51)
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:40)
at com.frink.data.quality.drools.KnowledgeBaseBuilder.buildKnowledgeBase(KnowledgeBaseBuilder.java:32)
at com.cascading.buffer.ProfileClassficationBuffer.operate(ProfileClassficationBuffer.java:57)
at cascading.flow.stream.BufferEveryWindow.receive(BufferEveryWindow.java:143)


jar -tf ~/Documents/projects/data_checker/build/libs/data_checker-launcher.jar | grep ecj
lib/ecj-3.5.1.jar  do you know which version of the ecj jar will be compatible? 

Ken Krugler

unread,
Mar 12, 2013, 1:46:05 PM3/12/13
to cascadi...@googlegroups.com
On Mar 12, 2013, at 10:44am, Felix wrote:

Ken,

Thanks for the info.  The reason I moved to Janino is to take advantage of the jar that is already packaged with cascading but since this is not a good option I have tried to include the eclipse compiler for drools but I ran into an other problem
Caused by: java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/CategorizedProblem;
at org.drools.commons.jci.compilers.EclipseJavaCompiler$3.acceptResult(EclipseJavaCompiler.java:359)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:335)
at org.drools.commons.jci.compilers.EclipseJavaCompiler.compile(EclipseJavaCompiler.java:389)
at org.drools.commons.jci.compilers.AbstractJavaCompiler.compile(AbstractJavaCompiler.java:49)
at org.drools.rule.builder.dialect.java.JavaDialect.compileAll(JavaDialect.java:408)
at org.drools.compiler.DialectCompiletimeRegistry.compileAll(DialectCompiletimeRegistry.java:46)
at org.drools.compiler.PackageRegistry.compileAll(PackageRegistry.java:102)
at org.drools.compiler.PackageBuilder.compileAll(PackageBuilder.java:1046)
at org.drools.compiler.PackageBuilder.compileAllRules(PackageBuilder.java:882)
at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:871)
at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:466)
at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:694)
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:51)
at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:40)
at com.frink.data.quality.drools.KnowledgeBaseBuilder.buildKnowledgeBase(KnowledgeBaseBuilder.java:32)
at com.cascading.buffer.ProfileClassficationBuffer.operate(ProfileClassficationBuffer.java:57)
at cascading.flow.stream.BufferEveryWindow.receive(BufferEveryWindow.java:143)


jar -tf ~/Documents/projects/data_checker/build/libs/data_checker-launcher.jar | grep ecj
lib/ecj-3.5.1.jar  do you know which version of the ecj jar will be compatible? 

No, sorry - this isn't a Cascading issue from what I can see, so you'll need to figure out what jars you need.

-- Ken

--
You received this message because you are subscribed to the Google Groups "cascading-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cascading-use...@googlegroups.com.
To post to this group, send email to cascadi...@googlegroups.com.
Visit this group at http://groups.google.com/group/cascading-user?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 
Reply all
Reply to author
Forward
0 new messages