webentwicklung-frage-antwort-db.com.de

Paket für Basisnamen/Bundle, Gebietsschema en_US kann nicht gefunden werden

Ich verwende eine Bibliothek, die von JSF abhängig ist.

Wenn ich versuche, mein Projekt auszuführen, werden folgende Ausnahmemassagen angezeigt. 

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)

Irgendwelche Ideen ?

31

Die Ausnahme besagt, dass eine Bundle_en_US.properties- oder Bundle_en.properties- oder zumindest Bundle.properties-Datei im Stammverzeichnis des Klassenpfads erwartet wird, tatsächlich jedoch keine.

Stellen Sie sicher, dass sich mindestens eine der genannten Dateien im Stammverzeichnis des Klassenpfads befindet. Oder stellen Sie sicher, dass Sie den richtigen Paketnamen angeben. Wenn beispielsweise die Bundle-Dateien tatsächlich im Paket com.example.i18n abgelegt wurden, müssen Sie com.example.i18n.Bundle als Paketnamen anstelle von Bundle übergeben.

Falls Sie Eclipse "Dynamic Web Project" verwenden, wird der Klassenpfadstamm durch den Ordner src dargestellt, in dem sich alle Ihre Java-Pakete befinden. Falls Sie ein Maven-Projekt verwenden, wird der Klassenpfadstamm für Ressourcendateien durch den Ordner src/main/resources dargestellt.

Siehe auch:

50
BalusC

maven-Tomcat-Plugin

Wenn Sie das Projekt mit dem maven-Tomcat-plugin/maven-Tomcat7-plugin starten, müssen Sie den Bundle.properties oder sogar den Resource.properties in src/main/webapp/WEB-INF/classes einfügen. Fragen Sie nicht nach dem Grund, es liegt daran, wie das Plugin einen Kater fälscht.

10
Peter Rader

Ich hatte das gleiche Problem, und die Lösung von Balus hat das Problem behoben.

Für das Protokoll:

WEB-INF\faces-config ist

<?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>

Und hatte Message.properties unter WebContent\Resources (nach mkyongs Tutorial)

die pesky-Ausnahme erschien auch, wenn ich das Bundle in "Message_en_us" und "Message_en" umbenannte. Das Verschieben nach src\hat funktioniert. 

Sollte jemand das fehlende Stück posten, damit Bundles unter Ressourcen funktionieren, wäre das eine schöne Sache.

5
demonz demonz

Wenn Sie die .Java-Datei in Eclipse ausführen, müssen Sie den Ressourcenpfad zum Erstellungspfad hinzufügen. Danach wird dieser Fehler nicht angezeigt

4
harry

In meinem Fall war das Problem die Verwendung des Sprach-Tags "en_US" in Locale.forLanguageTag(..) anstelle von "en-US". Verwenden Sie einen Bindestrich anstelle von Unterstrichen!

Verwenden Sie auch Locale.forLanguageTag("en-US") anstelle von new Locale("en_US") oder new Locale("en_US"), um eine Sprache ("en") mit einer Region ("US") zu definieren - aber new Locale("en") funktioniert.

2
electrobabe

In meinem Fall befasste ich mich mit dem SpringBoot -Projekt und bekam die gleiche Ausnahme. 

Die Lösung wird durch Hinzufügen der Datei env.properties in den Klassenpfad (d. H. Ordner "src/main/resource") erstellt. Das Problem bestand darin, dass es in der log4j-Konfiguration eine Eigenschaft wie gab 

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

1
milosdju

Ich konnte das Problem beheben, die Ressource befand sich in meinen Projektverzeichnissen, aber als das Dienstprogramm junit versucht, sie zu laden, wurde der Fehler MissingResourceException zurückgegeben. Der Grund dafür war, dass sich die Ressource im nicht im Klassenpfad des Testklassenpakets befindlichen befand. Als ich also den Ordner cfg/zu meinem Klassenpfad-Eintrag in Eclipse hinzufügte und das Ausgabeverzeichnis in build conf auf dasselbe Klassenpaket festlegte, war das Problem aufgelöst.

Wenn Sie diesen Ansatz ausprobieren, stellen Sie sicher, dass in der classpath conf-Datei der classpath-Eintrag des Ressourcenverzeichnisses angezeigt wird (z. B. cfg /).

0
Johnson

Ich hatte das gleiche Problem mit Netbeans. Ich ging in den Projektordner und kopierte die Eigenschaftsdatei. Ich glaube, auf "Build" geklickt und dann "Klassen". Ich habe die Eigenschaftendatei in diesem Ordner hinzugefügt. Das hat mein Problem gelöst.

0
Sedrick

Stellen Sie sicher, dass Sie die Eigenschaftendateien nicht im falschen Ressourcenordner hinzugefügt haben, da sich eine unter "Webseiten" und eine unter "Andere Quellen/..." befindet. Sie mussten unter "Andere Quellen/..." stehen.

0
Dinca Adrian

Ich benutze Eclipse (ohne Maven), also platziere ich die .properties-Datei im src-Ordner, der auch den Java-Quellcode enthält, um die .properties-Datei nach dem Erstellen des Projekts im classes-Ordner zu haben. Es funktioniert gut ... __ Schauen Sie sich diesen Beitrag an: https://www.mkyong.com/jsf2/cant-find-bundle-for-base-name-xxx-locale-de_us/

Hoffe das hilft dir.

0
trungvt89.it

Das Problem muss sein, dass das Attribut resource-bunde> base-name in der Datei faces-config.xml einen anderen Pfad zu Ihren Eigenschaften hat. Dies ist mir im Java EE-Tutorial Firstcup passiert. Ich habe bei der Projekterstellung einen anderen Paketnamen angegeben und Glassfish konnte den Eigenschaftenordner nicht finden, der sich auf "firstcup.web" befindet. 

Ich hoffe, es hilft.

0
Dago MX