es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Significado del error en Java “SNO: ‘+= ‘falló la reconversión”: El error “SNO: ‘+= ‘falló la reconversión” en Java se produce cuando ocurre un problema al intentar realizar una reconversión con el operador de concatenación “+=”. Este error indica que hubo un fallo en la conversión o asignación de valores dentro de una expresión que contiene el operador “+=”.

Encontré un error misterioso en el registro de Pentaho Data Integration (PDI, también conocido como Kettle) que se muestra a través de Jenkins:

org.codehaus.janino.CompileException: SNO: “+=” error de reconversión fallada

El único código que contiene “+=” es así…

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;
}

}

Intenté:

  • Buscar en Google/Ecosia el mensaje de error.
  • Buscar en Stack Overflow el mensaje de error: nada.
  • Buscar en Stack Overflow los conceptos individuales: todos parecen estar bien.
  • Consultar los detalles como los tipos compatibles y los tipos de retorno para Long.valueOf, += y los métodos .put, .getKey y .getValue de HashMap.
  • Probar las partes de ese código en el probador de Java en línea de w3schools.
  • Reemplazar public boolean processRow por su usual public static void main.
  • Este código no genera errores en w3schools, pero no muestra resultados hasta que lo reemplazo tanto que realmente solo estoy probando los componentes.
  • Mientras tanto, parece que a Janine no le gusta la alternativa de iterar con un colon en un bucle for, se espera que haya un punto y coma.</string,></string,>
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según la información proporcionada, parece que el error está relacionado con el uso del operador += en el método processRow. Janino (un compilador de Java) está lanzando una CompileException, lo que indica que hay un problema con el código.

    El código proporcionado parece estar bien y es posible que no haya ningún problema con él. Es posible que el error sea causado por algún otro código que no está incluido en el fragmento proporcionado.

    Se han realizado varios intentos para resolver el problema, incluyendo la búsqueda en motores de búsqueda y en Stack Overflow, la verificación de los componentes del código, la prueba del código en probadores de Java en línea y la sustitución de la firma del método. Sin embargo, el error persiste.

    Una cosa que se puede intentar es reemplazar el operador += por la adición tradicional, es decir, usar calcUnidentified = calcUnidentified + currentValue;. Además, la variable calcTotal también se está incrementando con el operador += en el bucle, y podría valer la pena comprobar si reemplazarlo por la adición tradicional resuelve el problema.

    Si el problema persiste, puede ser necesario revisar la configuración de PDI/Jenkins, las bibliotecas instaladas y otros factores relacionados que podrían estar causando el problema.

Comments are closed.