在java.util.Date类型上找不到方法toGregorianCalendar()

时间:2017-02-02 10:46:12

标签: java spring spring-integration spring-el

以下是spring集成流程的摘录,其中我们遇到错误,在某些机器上流量测试用例正在通过,但在某些系统上它会失败:

Spring Integration Flow:

<integration:chain input-channel="X" output-channel="Y">
    <integration:transformer expression="'{1:F21XXXX}{4:{1XX:' +  new java.text.SimpleDateFormat('yyMMddHHmm').format(payload.arrivalDateTime.toGregorianCalendar().getTime()) + '}{444:' + payload.statusDetail.etc + '}}'"/>
 </integration:chain>

错误:

ERROR 02 / Feb / 2017 09:35:08,608 [org.springframework.jms.listener.DefaultMessageListenerContainer#48-1] springframework.integration.handler.LoggingHandler - org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 88):方法调用:在java.util.Date类型上找不到方法toGregorianCalendar()         在org.springframework.expression.spel.ast.MethodReference.findAccessorForMethod(MethodReference.java:185)         在org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:107)

我们不确定缺少什么,我们在所有机器上检查了Java(1.6.0_35)/ maven(3.0.3)及其相同内容。任何帮助都会被批准。感谢。

1 个答案:

答案 0 :(得分:0)

方法toGregorianCalendar()在类XMLGregorianCalendar中。从例外情况可以看出,spring el试图为Date对象调用GregorianCalendar()。我想你的问题是,对于某些测试用例,你得到的是payload.arrivalDateTime作为Date对象而不是XMLGregorianCalendar对象。

https://docs.oracle.com/javase/7/docs/api/javax/xml/datatype/XMLGregorianCalendar.html