Jenkins CI中的groovy日期格式错误

Jenkins CI中的groovy日期格式错误,groovy,jenkins,Groovy,Jenkins,我们只是将CI平台(jenkins v1.538)从WinSrv2003迁移到WinSrv2008,方法是将所有作业和配置文件从旧服务器复制并粘贴到新服务器上。之后,除groovy作业外,所有作业都正常运行。这里有一个日期格式错误。语言和区域设置正确(两台服务器上的区域和日期设置相同)。我们还试图在代码中强制使用正确的格式,但jenkins仍然抛出以下错误: FATAL: java.util.Date cannot be cast to java.lang.String java.lang.Cl


我们只是将CI平台(jenkins v1.538)从WinSrv2003迁移到WinSrv2008,方法是将所有作业和配置文件从旧服务器复制并粘贴到新服务器上。之后,除groovy作业外,所有作业都正常运行。这里有一个日期格式错误。语言和区域设置正确(两台服务器上的区域和日期设置相同)。我们还试图在代码中强制使用正确的格式,但jenkins仍然抛出以下错误:

FATAL: java.util.Date cannot be cast to java.lang.String
java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.String
at java.lang.String.compareTo(Unknown Source)
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.compareToWithEqualityCheck(DefaultTypeTransformation.java:599)
groovy代码:

import hudson.model.*
import hudson.FilePath
import groovy.xml.MarkupBuilder
import java.text.SimpleDateFormat
...
def tsformat = "yyyy-MM-dd HH:mm:ss"
def to_ts_format = new SimpleDateFormat(tsformat)
def from_integrity_format = new SimpleDateFormat ("MMM dd, yyyy hh:mm:ss aa")

.....
try {
...
  xml.changereport (job:srcjobname, time:today.format (tsformat), predecessortime:predectime.format (tsformat)) {

for (def b in builds) {       
  b_no = b.getNumber ()
  if (b_no < from || b_no > to) {
    println ("Skipped build: " + b_no)
    continue
  } else {
    println ("Processing build: " + b_no)
  }

  buildinfo (number:b.number, time:b.getTime ().format (tsformat)) {
    for (cs in b.changeSet) {
      for (ci in cs) {
        citime =  from_integrity_format.parse (ci.date)
        if (citime > predectime) {
        ...
导入hudson.model*
导入hudson.FilePath
导入groovy.xml.MarkupBuilder
导入java.text.simpleDataFormat
...
def tsformat=“yyyy-MM-dd HH:MM:ss”
def to_ts_format=新的SimpleDataFormat(tsformat)
def from_integrity_format=新的简化格式(“mm dd,yyyy hh:mm:ss aa”)
.....
试一试{
...
xml.changereport(作业:srcjobname,时间:today.format(tsformat),predecessortime:predectime.format(tsformat)){
对于(内部版本中的def b){
b_no=b.getNumber()
if(b|u no<从| b|u no>到){
println(“跳过构建:+b_编号)
持续
}否则{
println(“处理构建:+b_编号)
}
buildinfo(编号:b.number,时间:b.getTime().format(tsformat)){
用于(b.changeSet中的cs){
for(cs中的ci){
citime=from_integrity_format.parse(ci.date)
如果(citime>Predictime){
...
在if条件下,将抛出错误

Java版本(1.7.0)、jenkins、groovy plugin等与旧服务器上运行的版本相同。作业和groovy scrip没有更改。有什么我们忘记在jenkins或服务器端配置的吗


谢谢Steffen,这可能发生在网上:
buildinfo(编号:b.number,时间:b.getTime().format(tsformat))
b、 getTime()返回一个DateTime对象,您正试图将其格式化为字符串(
tsFormat

另一个可能发生这种情况的地方是:
citime=from\u integrity\u format.parse(ci.date)

确保
parse()
需要的是
ci.date
的类型,它可能需要一个字符串,并且您给它一个
date

哪个if语句?该代码中有两个