2010-02-26 14 views
6

Estoy ejecutando Eclipse y tratando de crear un programa de prueba simple probando nuestro ResourceBundle con un par de archivos diferentes. El archivo se llama correctamente como ResourceFile_us_US.properties. Pero recibo una excepción en la llamada a getBundle() porque aparentemente no puede encontrar el archivo. ¿Dónde debería ubicarse para que se pueda encontrar?¿Dónde busca ResourceBundle.getBundle ("ResourceFile", nueva configuración regional ("nos", "US")) para buscar el archivo?

+1

us_US? ¿Quieres en_US? –

Respuesta

1

Creo que solo se ve en el classpath.

12

Usted sabe que java está buscando un archivo de propiedades en una localidad específica. Es posible que desconcertado por qué java sigue quejándose de que no puede encontrar un archivo de propiedades que está allí. Un par de cosas a tener en cuenta al depurar este tipo de errores:

  1. Estas propiedades de los recursos archivos se cargan por el cargador de clases, de forma similar a las clases de Java. Por lo tanto, debe incluirlos en su classpath en tiempo de ejecución.

  2. Estos recursos tienen nombre de recurso completamente calificado, similar a un nombre de clase totalmente calificado, extracto que no puede importar un recurso en su archivo de origen java. ¿Por qué? porque su nombre toma la forma de una cadena.

  3. ResourceBundle.getBundle("config") le dice al cargador de clases que cargue un recurso llamado "config" con el paquete predeterminado (es decir, sin paquete). NO significa un recurso en el paquete actual que tiene la clase de referencia.

  4. ResourceBundle.getBundle("com.cheng.scrap.config") indica al cargador de clases para cargar un recurso denominado "config" con el paquete "com.cheng.scrap." Su-recursos-nombre completo es "com.cheng.scrap.config"

Más: Can't find bundle for base name com...config, locale zh_CN

Saludos.

1

Una de dos:

  1. /src/recursos Asegúrese de incluir entorno local en el nombre del archivo de paquete de recursos. por ejemplo, para Zimbabwe, será ResourceBundle_en_ZW.properties y lo cargará como ResourceBundle resourceBundle = ResourceBundle.getBunndle ("ResourceBundle", Locale.getDefault());

  2. En su classpath. Asegúrese de que la variable de entorno calsspath se establece

6

Si crea un paquete resources y poner el archivo hello_en_US.properties en su interior, que tiene el contenido:

hola = Hola mundo !!

puede imprimir el contenido de hola utilizando el siguiente código:

package localization; 

import java.util.Locale; 
import java.util.ResourceBundle; 

public class ResourceBundleDemo { 

public static void main(String[] args) { 

    Locale en_US = new Locale("en", "US"); 
    ResourceBundle bundle = ResourceBundle.getBundle("resources.hello", en_US); 

    // print the value of the key "hello" 
    System.out.println("" + bundle.getString("hello")); 

    } 
} 
Cuestiones relacionadas