原因:java.lang.NoSuchFieldError:ruleMemo

原因:java.lang.NoSuchFieldError:ruleMemo,java,antlr,drools,Java,Antlr,Drools,我得到了这个例外——遗憾的是,我正试图增强一个项目,使用常春藤而不是蚂蚁,而通常我会做一个 “添加新库文件” “运行程序” “检查崩溃时它声称需要的库文件” 这一次,程序崩溃了 Caused by: java.lang.NoSuchFieldError: ruleMemo 这当然不是很有用,我也不知道该去哪里找。打开stacktrace项不会产生ruleMemo成员的味道。。。以前有没有人见过这个,知道什么类在调用/使用它 要使用的lib文件也很有用,但没有类那么有用 哇-让我放一个stack

我得到了这个例外——遗憾的是,我正试图增强一个项目,使用常春藤而不是蚂蚁,而通常我会做一个

“添加新库文件”

“运行程序”

“检查崩溃时它声称需要的库文件”

这一次,程序崩溃了

Caused by: java.lang.NoSuchFieldError: ruleMemo
这当然不是很有用,我也不知道该去哪里找。打开stacktrace项不会产生ruleMemo成员的味道。。。以前有没有人见过这个,知道什么类在调用/使用它

要使用的lib文件也很有用,但没有类那么有用

哇-让我放一个stacktrace进去,这样有人就不会把ruleMemo作为一个成员来滚动他们自己的类,然后告诉我我需要它

Caused by: java.lang.NoSuchFieldError: ruleMemo
at org.drools.lang.DRLLexer.<init>(DRLLexer.java:96)
at org.drools.compiler.DrlParser.getParser(DrlParser.java:207)
at org.drools.compiler.DrlParser.parse(DrlParser.java:60)
at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:165)
at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:276)
at org.springframework.beans.factory.config.MethodInvokingFactoryBean.doInvoke(MethodInvokingFactoryBean.java:160)
at org.springframework.beans.factory.config.MethodInvokingFactoryBean.afterPropertiesSet(MethodInvokingFactoryBean.java:150)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
... 70 more
原因:java.lang.NoSuchFieldError:ruleMemo
位于org.drools.lang.DRLLexer(DRLLexer.java:96)
位于org.drools.compiler.DrlParser.getParser(DrlParser.java:207)
位于org.drools.compiler.DrlParser.parse(DrlParser.java:60)
位于org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:165)
位于sun.reflect.GeneratedMethodAccessor79.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:276)
位于org.springframework.beans.factory.config.MethodInvokingFactoryBean.doInvoke(MethodInvokingFactoryBean.java:160)
位于org.springframework.beans.factory.config.MethodInvokingFactoryBean.AfterPropertieSet(MethodInvokingFactoryBean.java:150)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
... 70多
根本原因分析 我怀疑您使用的是drools编译器jar的4.0.1版

该jar仅与antlr运行时jar的3.0.1版本兼容:

推荐 我推荐两件事:

  • 使用更现代的drools版本(版本4.0.1)
  • 使用从Maven Central或本地Maven存储库代理提取依赖项
将ivy与Maven存储库管理器相结合将确保检索到正确的相互依赖关系

根本原因分析 我怀疑您使用的是drools编译器jar的4.0.1版

该jar仅与antlr运行时jar的3.0.1版本兼容:

推荐 我推荐两件事:

  • 使用更现代的drools版本(版本4.0.1)
  • 使用从Maven Central或本地Maven存储库代理提取依赖项

将ivy与Maven存储库管理器相结合将确保检索到正确的相互依赖关系

好笑。。。异常应该与堆栈跟踪第一行中的某个类相关。它表明
ruleMemo
不是给定类的成员,并且在代码中的某个地方,有人要求这样一个字段。是否没有stacktrace可供检查?请注意,这几乎肯定表明jar版本不匹配。如果类A访问类B中的字段ruleMemo,则在编译A时,ruleMemo必须在类B中。但如果JAR在编译后被更改,那么ruleMemo可能在B。。。异常应该与堆栈跟踪第一行中的某个类相关。它表明
ruleMemo
不是给定类的成员,并且在代码中的某个地方,有人要求这样一个字段。是否没有stacktrace可供检查?请注意,这几乎肯定表明jar版本不匹配。如果类A访问类B中的字段ruleMemo,则在编译A时,ruleMemo必须在类B中。但是,如果JAR在编译后被更改,那么ruleMemo可能不再在B中找到。