2010-07-23 11 views
8

Sé que hay muchas preguntas y respuestas exactamente sobre este error en stackoverflow y en otros foros. Pero todavía no puedo encontrar la solución ...MissingResourceException - No se puede encontrar el paquete para el nombre base

Por razones de velocidad, tengo una clase de utilidad que carga todos los mapas de datos estáticos (por ejemplo, meses) dependiendo de la configuración regional provista.

Así que esta clase de utilidad se ve algo como esto:

public static final String GLOBAL_MESSAGES = "globalMessages"; 

private static Map<Integer,Month> monthsMap; 

private ResourceBundle getResourceBundle(Locale locale) { 
    ResourceBundle rb = ResourceBundle.getBundle(GLOBAL_MESSAGES, locale); 
    return rb; 
} 

private Map<Integer,Month> getMonths() { 
    if(monthsMap == null) { 
     setMonths(); 
    } 
    return monthsMap; 
} 

private void setMonths() { 
    try { 
     monthsMap = getFactory().getDAO().getAllMonths(); 
    } catch (SQLException e) { 
     logger.error(e); 
    } catch (EmptyResultException e) { 
     logger.error(e); 
    } 
} 

public Map<Integer,Month> getMonths(Locale locale) { 
    if(locale == null) { 
     return monthsMap; 
    } else { 
     if(this.locale != locale) { 
      this.locale = locale; 
      setMonths(); 
     } 
    } 
    ResourceBundle rb = getResourceBundle(locale); 
    Map<Integer,Month> map = new HashMap<Integer, Month>(); 
    for(Month akVO : getMonths().values()) { 
     try { 
      akVO.setName(rb.getString(akVO.getName())); 
     } catch (MissingResourceException e) { 
      //already done 
     } 
     map.put(akVO.getId(), akVO); 
    }  
    return map; 
} 

archivos globalMessages.properties (globalMessages_en_US.properties, ...) son directamente en el paquete fuente recursos. Cuando se implementa en Tomcat, hay en la carpeta WEB-INF/classes.

Ahora el problema. Todo funciona cuando se trabaja en esta aplicación. Pero tengo otra aplicación que se conecta a través de la API REST (JAX-RS) a esta. Al hacer una petición Aplicación/descanso/months.xml me sale el siguiente error:

java.util.MissingResourceException: Can't find bundle for base name globalMessages, locale en_us 

estoy realmente perdido. Y desesperado ...

Respuesta

14

Ok ... He encontrado el error. Después de un f * día ... El problema está en las letras sensibles al caso. Aunque, al configurar el entorno local desde el reposo con "en_US" de alguna manera ResourceBundle (al pasar por REST) ​​está buscando "en_us".

EDIT: Bien, también encontré el error por el que todo estaba en minúsculas. El problema era, porque yo estaba creando local con:

Locale locale = new Locale("en_US"); 

en lugar de:

Locale locale = new Locale("en","US"); 
+10

Haha, oh hombre, qué no se Loooove programación. – Pat

+0

:) Me tiene que gustar tu comentario :) – Trick

+1

Me ayudaste. Estaba usando Locale.getDefault() que funcionaba bien en Eclipse y en el contenedor WAS pero no cuando fui a un cuadro de UNIX. ¡Gracias! – iowatiger08

0

Para cualquiera que tenga problemas con el servidor Glassfish en este caso, existe la posibilidad de establecer la configuración regional en el Descripción general de administración

enter image description here

simple sobrescribir la configuración regional predeterminada como se muestra en la imagen

Alguien podría resultar útil, tuve problemas para varias horas y no quiero que nadie tenga este tipo de problemas aswell

Cuestiones relacionadas