web-dev-qa-db-ja.com

ベース名/ Bundle、ロケール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)

何か案は ?

36

例外は、クラスパスのルートにBundle_en_US.properties、またはBundle_en.properties、または少なくともBundle.propertiesファイルが必要ですが、実際にはないことを示しています。

上記のファイルの少なくとも1つがクラスパスのルートに存在することを確認してください。または、適切なバンドル名を指定してください。たとえば、バンドルファイルが実際にパッケージcom.example.i18nに配置されている場合、Bundleの代わりにcom.example.i18n.Bundleをバンドル名として渡す必要があります。

Eclipse "Dynamic Web Project"を使用している場合、クラスパスのルートはJavaパッケージがあるsrcフォルダーで表されます。 Mavenプロジェクトを使用している場合、リソースファイルのクラスパスルートはsrc/main/resourcesフォルダーで表されます。

こちらもご覧ください:

54
BalusC

maven-Tomcat-plugin

maven-Tomcat-plugin/maven-Tomcat7-pluginを使用してプロジェクトを開始する場合、Bundle.propertiesまたはResource.propertiessrc/main/webapp/WEB-INF/classesに配置する必要があります。プラグインがどのようにTomcatを偽造するのか、理由を聞かないでください。

9
Peter Rader

私は同じ問題を抱えていて、手すりの解決策はそれを修正しました。

記録のために:

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>

そして、mkyongのチュートリアルの後、WebContent\Resourcesの下にMessage.propertiesがありました

バンドルの名前を「Message_en_us」および「Message_en」に変更した場合でも、厄介な例外が発生しました。 src \への移動は機能しました。

誰かがリソースの下でバンドルを機能させるために行方不明の部分を投稿した場合、それは美しいものになるでしょう。

5
demonz demonz

Eclipseで.Javaファイルを実行している場合は、ビルドパスにリソースパスを追加する必要があります。その後、このエラーは表示されません

4
harry

私の場合、問題は「en-US」の代わりにLocale.forLanguageTag(..)で言語タグ「en_US」を使用していました-下線の代わりにダッシュを使用してください!

また、Locale.forLanguageTag("en-US")またはnew Locale("en_US")の代わりにnew Locale("en_US")を使用して、地域( "US")で言語( "en")を定義しますが、new Locale("en")は機能します。

2
electrobabe

私の場合、SpringBootプロジェクトを扱っていましたが、同じ例外が発生しました。

解決策は、env.propertiesファイルをクラスパスに追加(つまり、src/main/resourceフォルダー)によって作成されます。問題の原因は、log4j構成に次のようなプロパティがあったことです

<Property name="basePath">${bundle:env:log.file.path}</Property>

1
milosdju

この問題は解決できました。リソースはプロジェクトディレクトリにありましたが、junitユーティリティがそれを読み込もうとすると、MissingResourceExceptionのエラーが返されていました。そして、その理由は、リソースがテストクラスパッケージのクラスパス上にないため、Eclipseのクラスパスパスエントリにcfg /フォルダーを追加し、ビルドconfの出力ディレクトリを同じクラスパッケージに設定したときに問題が発生しました解決しました。

この方法を試してみると、classpath confファイルにリソースディレクトリのクラスパスエントリが表示されます(例:cfg /)

0
Johnson

Netbeansを使用しても同じ問題が発生しました。プロジェクトフォルダに移動し、プロパティファイルをコピーしました。 「ビルド」をクリックしてから「クラス」をクリックしたと思います。そのフォルダーにプロパティファイルを追加しました。これで私の問題は解決しました。

0
Sedrick

「Webページ」の下と「その他のソース/ ...」の下にあるため、間違ったリソースフォルダーにプロパティファイルを追加していないことを確認してください。それらは「その他のソース/ ...」の下にある必要がありました。

0
Dinca Adrian

Eclipse(Mavenなし)を使用するため、.propertiesファイルを配置するために、Javaソースコードも含むsrcフォルダーに.propertiesファイルを配置しますプロジェクトをビルドした後、classesフォルダー。正常に動作します。この投稿を見てください: https://www.mkyong.com/jsf2/cant-find-bundle-for-base-name-xxx-locale-en_us/

これがお役に立てば幸いです。

0
trungvt89.it

問題は、faces-config.xmlファイルのresource-bunde> base-name属性がプロパティへの異なるパスを持っていることです。これはfirstcup Java EEチュートリアルで起こりました。その後、プロジェクトの作成時に別のパッケージ名を付けましたが、Glassfishは「firstcup.web」にあるプロパティフォルダーを見つけることができませんでした。

役に立てば幸いです。

0
Mr. D MX