2011-06-16 46 views
1

我試圖啓動一個使用Drools 5.2.0.M1的webapp。我啓動時獲取以下堆棧跟蹤:在Jetty上使用Drools

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:336) 
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:335) 
at org.drools.commons.jci.compilers.EclipseJavaCompiler.compile(EclipseJavaCompiler.java:366) 
at org.drools.commons.jci.compilers.AbstractJavaCompiler.compile(AbstractJavaCompiler.java:51) 
at org.drools.rule.builder.dialect.java.JavaDialect.compileAll(JavaDialect.java:366) 
at org.drools.compiler.DialectCompiletimeRegistry.compileAll(DialectCompiletimeRegistry.java:55) 

我在聚甲醛的罐子:)

<dependency> 
     <groupId>org.drools</groupId> 
     <artifactId>drools-compiler</artifactId> 
     <version>5.2.0.M1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jdt.core.compiler</groupId> 
     <artifactId>ecj</artifactId> 
     <version>3.5.1</version> 
    </dependency> 

它爲什麼不能找到CompilationResult.getProblems(?

回答

2

JDT不向後兼容。 檢查drools-compiler pom(與您使用的版本完全相同),它依賴於哪個版本的ecj並使用該版本。或者根本不聲明ecj,無論如何它都是drools編譯器的傳遞依賴。

PS:升級到流口水5.2.0.CR1(或最終,一旦它出)

0

我也有類似的問題。我有一個使用Jetty 6的網絡應用程序。Jetty 6顯然引入了JDT的不兼容版本。切換到Jetty 7後,問題解決了。