java 错误 "SNO: '+=' reconversion failed" 的含义?

Meaning of java error "SNO: '+=' reconversion failed"?

我在通过 Jenkins 显示的 Pentaho 数据集成(PDI,a.k.a.Kettle)日志中遇到了一个神秘错误:

org.codehaus.janino.CompileException: SNO: "+=" reconversion failed

唯一包含“+=”的代码是这样的...

import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
private static final String validKeys = "thing zero,thing two";
private Map/*<String, Long>*/ mapCount;

public boolean init ... {
    mapCount = new HashMap/*<String, Long>*/();
}
public boolean processRow ... {
    mapCount.put("thing zero", 0L);
    mapCount.put("thing one", 1L);
    Long calcUnidentified = 0L;
    Long calcTotal = 0L;
    Iterator it = mapCount.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry keyValuePair = (Map.Entry) it.next();
        
        String currentKey = keyValuePair.getKey().toString();
        Long currentValue = Long.valueOf(keyValuePair.getValue().toString());
        
        if (!validKeys.contains(currentKey)) {
            calcUnidentified += currentValue;
        }
        calcTotal += currentValue;
    }
}

我试过了:

对于 java 来说听起来很奇怪,解决方案是简单地替换...

calcUnidentified += currentValue;

...与...

calcUnidentified = calcUnidentified + currentValue;

正如 Thomas Kläger 指出的那样,这个错误似乎是 Janino 特有的(PDI 将其用于 java)。