Impossible de trouver le bundle pour le nom de base
J'utilise une bibliothèque qui dépend de jfreechart (V 1.0.9).
Quand j'essaie d'exécuter le .jar, je reçois:
java.util.MissingResourceException: Can't find bundle for base name
org.jfree.chart.LocalizationBundle, locale en_US
at java.util.ResourceBundle.throwMissingResourceException
(ResourceBundle.java:1521)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:962)
J'ai essayé de créer un LocalizationBundle.fichier de propriétés, mais cela ne l'a pas fait. J'ai vérifié le CLASSPATH, toujours pas aller.
Des idées?
4 réponses
java.util.MissingResourceException: Can't find bundle for base name org.jfree.chart.LocalizationBundle, locale en_US
Au point, le message d'exception indique en détail que vous devez avoir l'un des fichiers suivants dans le classpath:
/org/jfree/chart/LocalizationBundle.properties
Ou
/org/jfree/chart/LocalizationBundle_en.properties
Ou
/org/jfree/chart/LocalizationBundle_en_US.properties
Voir aussi le tutoriel de Sun sur resourcebundles pour plus d'informations.
Mais comme il s'agit en fait d'un fichier de propriétés gérées par une tierce partie, vous ne devriez pas en créer vous-même. Il devrait déjà être disponible dans le fichier JAR JFreeChart. Afin de s'assurer que vous l'avez disponible dans le classpath pendant l'exécution. Assurez-vous également que vous utilisez la bonne version, l'emplacement du fichier propertiesfile dans l'arborescence des paquets pourrait avoir changé par la version de JFreeChart.
Lors de l'exécution D'un fichier JAR, vous pouvez utiliser l'argument -cp
pour spécifier le chemin de classe. Par exemple:
java -jar -cp c:/path/to/jfreechart.jar yourfile.jar
Vous pouvez également spécifier le chemin de classe en tant qu'entrée class-path
dans le fichier manifeste du JAR. Vous pouvez y utiliser des chemins relatifs qui sont relatifs au fichier JAR lui-même. Faire pas utilisez la variable d'environnement %CLASSPATH%
, elle est ignorée par JAR et tout le reste qui ne sont pas exécutés avec java.exe
sans -cp
, -classpath
et -jar
arguments.
BalusC a raison. La Version 1.0.13 est en cours, mais 1.0.9 semble avoir les bundles requis:
$ jar tf lib/jfreechart-1.0.9.jar | grep LocalizationBundle.properties org/jfree/chart/LocalizationBundle.properties org/jfree/chart/editor/LocalizationBundle.properties org/jfree/chart/plot/LocalizationBundle.properties
Si vous utilisez IntelliJ IDE juste un clic droit sur le package de ressources et aller à nouveau, puis sélectionnez ressource Boundle créer automatiquement un .fichier de propriétés pour vous. Cela a fonctionné pour moi .
Lorsque vous créez une initialisation du ResourceBundle, vous pouvez également le faire.
Pour les tests et le développement, j'ai créé un fichier de propriétés sous \ src avec le nom prp.propriété.
Utilisez cette façon:
ResourceBundle rb = ResourceBundle.getBundle("prp");
Convention de nommage et autres:
http://192.9.162.55/developer/technicalArticles/Intl/ResourceBundles/