2011-02-07 17 views
5

Ejecución de aplicaciones Java en IBM WebSphere causó tal excepción:java.math.BigDecimal excepción inesperada que se ejecuta en IBM WebSphere

Caused by: java.lang.NullPointerException 
at java.math.BigDecimal.add2DFP(BigDecimal.java:1946) 
at java.math.BigDecimal.add(BigDecimal.java:1881) 
at com.somepackage.components.view.PremiumSummaryViewModel.setPremiums(PremiumSummaryViewModel.java:101) 

cheque se hace nulo. Cuando revisé la clase java.math.BigDecimal no tiene dicho método add2DFP y tampoco llama a ninguno. Tal vez sea específico para JDK de IBM.

Cualquier comentario sobre esto sería apreciado.

Proporcionar código con respecto a excepción

BigDecimal annualPremiumAmt = nwtPremium != null && nwtPremium.getAnnualAmt() != null ? nwtPremium.getAnnualAmt() : BigDecimal.ZERO; 
    if (nwtPremium != null) { 
     BigDecimal formPremiumAmt = nwtPremium.getAnnualAmt(); 
     if (formPremiumAmt != null) { 
      policyFormTotal = policyFormTotal.add(annualPremiumAmt); //Bigdecimal 
      formList.setFormPremiumAmt(formList.getFormPremiumAmt().add(annualPremiumAmt)); //101 line 
     } 
    } 

instancia se está ejecutando en IBM JDK 1.6.

+0

Mostrar el bloque de código donde se está generando esto sería muy útil, especialmente la configuración de las variables en cuestión – Riggy

+0

Si una cadena se está convirtiendo a BigDecimal, sería útil ver también la cadena. – rajah9

+0

IBM JVM ha tenido problemas relacionados con la codificación en el pasado con BigDecimal. Por favor, no le des nada más, además del latín. – erloewe

Respuesta

1

fijo:

En realidad toda esta expresión es el interior del bucle que pensé que era innecesario mencionar. Me he movido declaración de BigDecimal annualPremiumAmt antes del bucle y el código reorganizado:

BigDecimal annualPremiumAmt; 
for(...) { 

    if (nwtPremium) { 
     annualPremiumAmt = nwtPremium.getAnnualAmt() != null ? nwtPremium.getAnnualAmt() : BigDecimal.ZERO; 
     policyFormTotal = policyFormTotal.add(annualPremiumAmt); 
     formList.setFormPremiumAmt(formList.getFormPremiumAmt().add(annualPremiumAmt)); 
    } 
} 
1

Enviaría sus problemas al Soporte de software de IBM. No cobran por instancia, es una cantidad ilimitada de solicitudes siempre que tenga un acuerdo de soporte.

0

¿Es policyFormTotal NULL? ¿Qué tal el resultado de formList.getFormPremiumAmt()? Nunca los verifica en este bloque de código.

+0

policyFormTotal no era nulo. –

0

que estoy viendo el mismo StackTrace en WebSphere, en mi caso es causada por pasar un nulo en java.math.BigDecimal#add. No es nada específico del JDK (Oracle JDK arroja un NPE de manera similar cuando pasa un nulo, pero sin delegar primero a otro método), solo que en el entorno de prueba con WebSphere tenemos menos control sobre los datos, por lo que los nulos suceden más.

Cuestiones relacionadas