J'utilise une bibliothèque qui a une dépendance sur JSF.
Quand j'essaie de faire fonctionner mon projet, il montre les massages suivants.
Java.util.MissingResourceException: Can't find bundle for base name /Bundle, locale en_US
at Java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.Java:1427)
at Java.util.ResourceBundle.getBundleImpl(ResourceBundle.Java:1250)
at Java.util.ResourceBundle.getBundle(ResourceBundle.Java:705)
Des idées ?
L'exception indique qu'un fichier Bundle_en_US.properties
, ou Bundle_en.properties
, ou au moins Bundle.properties
est attendu à la racine du chemin d'accès aux classes, mais qu'il n'en existe aucun.
Assurez-vous qu'au moins un des fichiers mentionnés est présent dans la racine du classpath. Ou bien, assurez-vous de fournir le nom de paquet approprié. Par exemple, si les fichiers d'ensembles ont en réalité été placés dans le package com.example.i18n
, vous devez passer com.example.i18n.Bundle
en tant que nom d'ensemble au lieu de Bundle
.
Si vous utilisez Eclipse "Projet Web dynamique", la racine du chemin de classe est représentée par le dossier src
, où se trouvent tous vos packages Java. Si vous utilisez un projet Maven, la racine du chemin de classe pour les fichiers de ressources est représentée par le dossier src/main/resources
.
Si vous démarrez le projet à l'aide du maven-Tomcat-plugin
/maven-Tomcat7-plugin
, vous devez placer le Bundle.properties
, voire le Resource.properties
dans src/main/webapp/WEB-INF/classes
. Ne demandez pas pourquoi, c'est parce que le plugin simule un Tomcat.
J'ai eu le même problemo et solution balus résolu.
Pour mémoire:
WEB-INF\faces-config est
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://Java.Sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee
http://Java.Sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
<message-bundle>
Message
</message-bundle>
</application>
</faces-config>
Et avait Message.properties sous WebContent\Resources (après le tutoriel de mkyong)
l'exception embêtante est apparue même lorsque j'ai renommé le paquet en "Message_en_us" et "Message_en". Le déplacer vers src\travaillée.
Si quelqu'un publie la pièce manquante pour que les liasses fonctionnent avec des ressources, ce serait une belle chose.
Si vous exécutez le fichier .Java dans Eclipse, vous devez ajouter le chemin de la ressource dans le chemin de génération. après cela, vous ne verrez plus cette erreur
Dans mon cas, le problème consistait à utiliser la balise de langue "en_US" dans Locale.forLanguageTag(..)
au lieu de "en-US" - utilisez un tiret au lieu de souligné!
Utilisez également Locale.forLanguageTag("en-US")
au lieu de new Locale("en_US")
ou new Locale("en_US")
pour définir une langue ("en") avec une région ("US") - mais new Locale("en")
fonctionne.
Dans mon cas, je traitais de SpringBoot project et j'ai la même exception.
La solution consiste à ajouter le fichier env.properties dans classpath (dossier i.e. src/main/resource). Ce qui faisait le problème est que dans la configuration de log4j il y avait une propriété comme
<Property name="basePath">${bundle:env:log.file.path}</Property>
J'ai eu le même problème en utilisant Netbeans. Je suis allé dans le dossier du projet et j'ai copié le fichier de propriétés. Je pense cliqué sur "construire" puis "classes". J'ai ajouté le fichier de propriétés dans ce dossier. Cela a résolu mon problème.
Assurez-vous de ne pas ajouter les fichiers de propriétés dans le mauvais dossier de ressources car il y en a un sous "Pages Web" et un sous "Autres sources/...". Ils devaient être classés sous "Autres sources/...".
J'utilise Eclipse (sans Maven) et je place donc le fichier .properties
dans le dossier src
qui contient également le code source Java, afin d'avoir le fichier .properties
dans le dossier classes
après la construction du projet. Cela fonctionne bien . Jetez un oeil à ce post: https://www.mkyong.com/jsf2/cant-find-bundle-for-base-name-xxx-locale-en_us/
J'espère que cela vous aidera.
Le problème doit être que l'attribut resource-bunde> nom-base du fichier faces-config.xml a un chemin différent pour vos propriétés. Cela m'est arrivé lors du premier tutoriel Java EE, j'ai donné un nom de package différent lors de la création du projet, puis Glassfish n'a pas pu trouver le dossier de propriétés qui se trouve sur "firstcup.web".
J'espère que ça aide.