2

我有一个类似的问题,但有时它有效。所描述的错误只会偶尔发生一次。

我正在使用 spring 3.2.5 和 ehcache 2.6.5。

异常跟踪:

org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): Field or property 'applicationID' cannot be found on null
        at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:213)
        at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:85)
        at org.springframework.expression.spel.ast.PropertyOrFieldReference.access$000(PropertyOrFieldReference.java:43)
        at org.springframework.expression.spel.ast.PropertyOrFieldReference$AccessorLValue.getValue(PropertyOrFieldReference.java:346)
        at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:82)
        at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:93)
        at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:89)
        at org.springframework.cache.interceptor.ExpressionEvaluator.key(ExpressionEvaluator.java:95)
        at org.springframework.cache.interceptor.CacheAspectSupport$CacheOperationContext.generateKey(CacheAspectSupport.java:452)
        at org.springframework.cache.interceptor.CacheAspectSupport.inspectCacheables(CacheAspectSupport.java:281)
        at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:199)
        at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:66)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at com.sun.proxy.$Proxy85.getMailOrigin(Unknown Source)
        at com.myApplication.MailFilterServiceImpl.isValid(ApplicationServiceImpl.java:134)

我的缓存代码如下:

MailFilterServiceImpl
    @Cacheable(value="mailClientsCache", key="#mb.applicationID")
        public MailClientBean getMailOrigin(MailBean mb){}

发生这种情况时:当我将 jenkins 配置为构建并自动部署到 tomcat7 / 当我使用 maven 在 eclipse WS 中构建并部署到 tomcat7 时。

当它完美运行时:在它失败一次后,如果我只用一些空格编辑 MailFilterServiceImpl.java 以使其在 eclipse 中重新编译并重新启动 tomcat7 服务器。

我需要让它在 CI 场景中工作。

[更新] 设置编译器选项 debug:true 可以解决这个问题。优化后似乎没有任何发言权。

<debug>true</debug>
<optimize>true</optimize>
4

1 回答 1

2

您的描述清楚地说明了一件事:当您使用 编译时javac它不起作用,但它与 Eclipse 编译器一起工作ecj。您可能在没有调试信息的情况下进行编译。

于 2014-06-19T07:40:55.807 回答