2016-06-07 89 views
0

我们使用eclipse Kepler Service Release 2,Tomcat 7.0.64,JDk1.7。我们之前使用drools 5.4.0,现在我们已经升级了drools 6.2.0。作为升级的一部分,我们在构建路径和Web应用程序库文件夹中添加了以下文件。Drools从5.4升级到6.2在eclipse中不工作

1.drools编译-6.2.0.Final-红帽-4.jar
2.drools核-6.2.0.Final-红帽-4.jar
3.ecj-4.3.1。 jar
4.drools-templates-6.2.0.Final-redhat-4.jar
5.kie-api-6.2.0.Final-redhat-4.jar
6.kie-internal-6.2.0 .Final-redhat-4.jar
7.knowledge-api-6.2.0.Final-redhat-4.jar
8.mvel2-2.2.4.Final-redhat-1.jar
9.protobuf- java-2.5.0.jar
10.slf4j-api-1.6.4.jar
11.slf4j-简单1.6.4.jar
12.xstream-1.4.7.jar
13.xmlpull-1.1.3.1.jar
14.antlr运行时-3.5.jar

我的tomcat和webspplication与以前版本的drools工作正常。但是,一旦我介绍了上述文件,问题就开始出现。从下面的错误中我知道一些jar文件发生冲突,但我不知道哪个文件发生了冲突,以及如何发现这些文件。

当我启动我的tomcat web服务器时,我得到了下面的异常。

java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IProblem; at org.apache.jasper.compiler.JDTCompiler$2.acceptResult(JDTCompiler.java:354) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:480) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:425) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:298) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:277) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:265) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 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.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:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 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:625) 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) Jun 07, 2016 11:56:57 AM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IProblem;] with root cause java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IProblem; at org.apache.jasper.compiler.JDTCompiler$2.acceptResult(JDTCompiler.java:354) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:480) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:425) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:298) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:277) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:265) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 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.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:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 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:625) 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)

有谁能帮我解决上述问题吗?

注意:我们在我们的项目中没有使用Maven。

回答

0

如果您不使用maven,那么获取所有必需的依赖关系可能会非常复杂。

我的建议是创建一个具有所需要的依赖非常简单的Maven项目(纪伊的API,流口水,编译器,流口水,核心,流口水模板),然后执行:

mvn dependency:copy-dependencies 

命令上面将在target下创建一个名为dependencies的目录,您可以在其中找到您正在使用的Drools工件所需的所有.jar文件。

希望它有帮助,

+0

感谢埃斯特万的回复。我发现ecj-4.3.1.jar导致了这个问题,因为如果我从WEB-INF/lib文件夹中删除jar,那么它就能够加载jsp页面。但是在这种情况下,由于没有jar文件,它无法在运行时加载我的KnowledgeBaseRepository。但是我仍然会按照您的方法来确定一组确切的依赖关系。 – Beast

+0

埃斯特万昨天我跟着你的方法,并检查了所有。我在问题中列出的所有jar文件都是由maven列出的依赖关系。 – Beast

+0

你确定你的类路径中没有多个'ecj'版本吗?根据你的堆栈跟踪,这个问题是由碧玉试图使用一个不是它期望的版本的ecj引起的。 –