web-dev-qa-db-fra.com

java.util.MissingResourceException: impossible de trouver l'ensemble pour le nom de base 'nom_fichier_propriété', paramètres régionaux en_US

J'essaie de créer une classe utilitaire ReadPropertyUtil.Java pour la lecture de données à partir d'un fichier de propriétés. Bien que ma classe soit située dans un répertoire util, mon fichier skyscrapper.properties est placé dans un autre répertoire.

Mais, lorsque j'essaie d'accéder aux propriétés en utilisant [ResourceBundle][1], j'obtiens des exceptions, cet ensemble ne peut pas être chargé.

Vous trouverez ci-dessous le code indiquant comment je lis les propriétés, ainsi qu’une image qui montre la structure de mon répertoire.

ReadPropertiesUtil.Java

/**
 * Properties file name.
 */
private static final String FILENAME = "skyscrapper";

/**
 * Resource bundle.
 */
private static ResourceBundle resourceBundle = ResourceBundle.getBundle(FILENAME);

/**
 * Method to read the property value.
 * 
 * @param key
 * @return
 */
public static String getProperty(final String key) {
    String str = null;
    if (resourceBundle != null) {
        str = resourceBundle.getString(key);
            LOGGER.debug("Value found: " + str + " for key: " + key);
    } else {
            LOGGER.debug("Properties file was not loaded correctly!!");
    }
    return str;
}

Structure de l'annuaire

enter image description here

Cette ligne donne l'erreur private static ResourceBundle resourceBundle = ResourceBundle.getBundle(FILENAME);

Je suis incapable de comprendre pourquoi cela ne fonctionne pas et quelle est la solution. Le dossier src est déjà complètement ajouté dans le chemin de génération.

32
roger_that

Essayez avec le nom complet pour la ressource:

private static final String FILENAME = "resources/skyscrapper";
31
Bludzee

ResourceBundle ne charge pas les fichiers? Vous devez d'abord insérer les fichiers dans une ressource. Que diriez-vous juste de charger dans un FileInputStream alors un PropertyResourceBundle

   FileInputStream fis = new FileInputStream("skyscrapper.properties");
   resourceBundle = new PropertyResourceBundle(fis);

Ou si vous avez besoin du code spécifique aux paramètres régionaux, cela devrait fonctionner.

File file = new File("skyscrapper.properties");
URL[] urls = {file.toURI().toURL()};
ClassLoader loader = new URLClassLoader(urls);
ResourceBundle rb = ResourceBundle.getBundle("skyscrapper", Locale.getDefault(), loader);
16
Ross Drew

Utilisez la ressource comme

ResourceBundle rb = ResourceBundle.getBundle("com//sudeep//internationalization//MyApp",locale);
or
ResourceBundle rb = ResourceBundle.getBundle("com.sudeep.internationalization.MyApp",locale);

Il suffit de donner le chemin qualifié .. Cela fonctionne pour moi !!!

6

Vous devez définir le nom du fichier de propriétés sans l'extension .properties, Cela fonctionne correctement pour moi :)

5
Alireza Alallah

J'aimerais partager mon expérience d'utilisation de Ant dans la construction de projets. Les fichiers * .properties doivent être copiés explicitement . En effet, Ant ne compilera pas les fichiers * .properties dans le répertoire de travail de la construction par défaut (javac ignore simplement * .properties). Par exemple:

<target name="compile" depends="init">
    <javac destdir="${dst}" srcdir="${src}" debug="on" encoding="utf-8" includeantruntime="false">
        <include name="com/example/**" />
        <classpath refid="libs" />
    </javac>
    <copy todir="${dst}">
        <fileset dir="${src}" includes="**/*.properties" />
    </copy>
</target>

<target name="jars" depends="compile">
    <jar jarfile="${app_jar}" basedir="${dst}" includes="com/example/**/*.*" />
</target>

Veuillez noter que la section 'copie' située sous la cible 'compiler' va répliquer les fichiers * .properties dans le répertoire de travail de la construction. Sans la section 'copy', le fichier jar ne contient pas les fichiers de propriétés, vous pouvez alors rencontrer l'exception Java.util.MissingResourceException.

2
peihan

Avec Eclipse et Windows:

vous devez copier 2 fichiers - xxxPROJECTxxx.properties - log4j.propertieshere: C:\Eclipse\CONTENER\Tomcat\Apache-Tomcat-7\lib

1
TontonZition

Je viens de me rendre compte que mon erreur a été causée par la convention de dénomination de mon fichier de propriétés. Quand j'ai utilisé xxxx.xxxx.properties, j'ai eu l'erreur: 

Java.util.MissingResourceException: impossible de trouver l'ensemble pour le nom de base 'nom_fichier_propriété', paramètres régionaux en_US

Le changer pour quelque chose comme xxx-xxxx.properties fonctionne comme un charme. J'espère aider quelqu'un!

0
Etch

faites un clic droit sur le fichier projet dans Eclipse et dans le chemin de construction, sélectionnez "Utiliser comme dossier source" ... Cela a fonctionné pour moi