Не удается найти пакет для базового имени /Bundle, locale en_US
Я использую библиотеку, которая имеет зависимость от JSF.
Когда я пытаюсь запустить свой проект, он показывает следующий массаж исключений.
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)
Любые идеи?
Ответы
Ответ 1
Исключением является указание, что в корневой каталог пути path ожидается файл Bundle_en_US.properties
или Bundle_en.properties
или, по крайней мере, Bundle.properties
, но на самом деле его нет.
Убедитесь, что хотя бы один из указанных файлов присутствует в корневой части пути к классам. Или убедитесь, что вы предоставили правильное имя пакета. Например, если файлы пакета действительно размещены в пакете com.example.i18n
, вам необходимо передать com.example.i18n.Bundle
как имя пакета вместо Bundle
.
Если вы используете Eclipse "Dynamic Web Project", корневой каталог classpath представлен папкой src
, там, где все ваши пакеты Java. Если вы используете проект Maven, корневой каталог классов для файлов ресурсов представлен src/main/resources
.
См. также:
Ответ 2
Maven-плагин-кот
Если вы запустите проект с помощью maven-tomcat-plugin
/maven-tomcat7-plugin
, вы должны поместить Bundle.properties
или даже Resource.properties
в src/main/webapp/WEB-INF/classes
. Не спрашивайте, почему, потому что, как плагин подделывает tomcat.
Ответ 3
У меня была такая же проблема, и баловое решение исправило ее.
Для записи:
WEB-INF\faces-config -
<?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>
И имел Message.properties в WebContent\Resources (после учебника mkyong)
явное исключение появилось даже тогда, когда я переименовал пакет в "Message_en_us" и "Message_en". Перемещение его в src\сработало.
Если кто-то разместит недостающую часть, чтобы заставить пакеты работать под ресурсами, это было бы красиво.
Ответ 4
Если вы запустите файл .java в Eclipse, вам нужно добавить путь к ресурсу в пути сборки.
после этого вы не увидите эту ошибку
Ответ 5
В моем случае проблема заключалась в использовании языкового тега "en_US" в Locale.forLanguageTag(..)
вместо "en-US" - используйте тире вместо подчеркивания!
Также используйте Locale.forLanguageTag("en-US")
вместо new Locale("en_US")
или new Locale("en_US")
чтобы определить язык ("en") с регионом ("US") - но new Locale("en")
работает.
Ответ 6
В моем случае я имел дело с проектом SpringBoot и получил то же исключение.
Решение достигается путем добавления файла env.properties в classpath (то есть в папку src/main/resource). Проблема заключалась в том, что в конфигурации log4j было свойство типа
<Property name="basePath">${bundle:env:log.file.path}</Property>
Ответ 7
У меня была такая же проблема с использованием Netbeans. Я пошел в папку проекта и скопировал файл свойств. Я думаю, что щелкнул "построить", а затем "классы". Я добавил файл свойств в эту папку. Это решило мою проблему.
Ответ 8
Я использую Eclipse (без Maven), поэтому размещаю файл .properties
в папке src
, который также содержит исходный код java, чтобы иметь файл .properties
в папке classes
после создания проекта, Он работает нормально.
Взгляните на этот пост: https://www.mkyong.com/jsf2/cant-find-bundle-for-base-name-xxx-locale-en_us/
Надеюсь, что это поможет вам.
Ответ 9
Проблема должна заключаться в том, что атрибут resource-bunde > base-name в файле faces-config.xml имеет другой путь к вашим свойствам. Это произошло со мной в первом учебном пособии по Java EE, я дал другое имя пакета при создании проекта, а затем Glassfish не смог найти папку свойств, которая находится на "firstcup.web".
Надеюсь, это поможет.
Ответ 10
Убедитесь, что вы не добавили файлы свойств в неправильную папку ресурсов, поскольку они находятся в разделе "Веб-страницы" и в разделе "Другие источники /...". Они должны были быть в разделе "Другие источники /...".
Ответ 11
Я смог решить проблему, ресурс находился в каталогах моего проекта, но когда утилита junit пыталась загрузить его, она возвращала ошибку MissingResourceException. И причина была в том, что ресурс находился не в classpath пакета тестового класса, поэтому, когда я добавил папку cfg/в мою запись пути к classpath в eclipse и установил выходной каталог в сборке conf для того же пакета классов, проблема заключалась в том, что решена.
Когда вы попробуете этот подход, просто убедитесь, что файл conf classpath показывает запись classpath каталога ресурсов (например, cfg/)