2010-01-17 10 views
22

J'utilise une bibliothèque qui dépend de jfreechart (v 1.0.9).Impossible de trouver le regroupement pour le nom de base

Lorsque je tente de lancer 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 fichier LocalizationBundle.properties, mais cela ne le font. J'ai vérifié le CLASSPATH, toujours pas aller.

Des idées?

Répondre

33
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 soit 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 également Sun's own tutorial about resourcebundles pour plus d'informations. Mais comme il s'agit en fait d'un fichier de propriétés géré par un tiers, vous ne devriez pas en créer un vous-même. Il devrait déjà être disponible dans le fichier JAR JFreeChart. Assurez-vous donc de l'avoir dans le classpath lors de l'exécution. Assurez-vous également que vous utilisez la bonne version, l'emplacement du fichier de propriétés dans l'arborescence du package peut avoir changé par 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 

Sinon, vous pouvez spécifier l'entrée classpath class-path dans le fichier manifeste du JAR. Vous pouvez utiliser ici des chemins relatifs qui sont relatifs au fichier JAR lui-même. Ne pas utiliser la variable d'environnement %CLASSPATH%, il est ignoré par son JAR et tout le reste qui ne sont pas exécutées avec java.exesans-cp, -classpath et -jar arguments.

+0

Il est également intéressant de vérifier que vous n'avez pas de fautes de frappe dans votre nom de bundle, je passe 30 min déboguer mon application juste pour réaliser que lorsque j'ai renommé mon bundle d'IDE, j'ai ajouté accidentellement un espace sous Linux, donc OS ne se plaint pas). Facepalm ... – csharpfolk

2

BalusC a raison. Version 1.0.13 est en cours, mais 1.0.9 semble avoir les faisceaux nécessaires:

 
$ 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 
0

Lorsque vous créez une initialisation du ResourceBundle, vous pouvez le faire de cette façon aussi.

Pour les tests et le développement, j'ai créé un fichier de propriétés sous \ src avec le nom prp.properties.

Utilisez cette technique:

ResourceBundle rb = ResourceBundle.getBundle("prp"); 

convention de nommage et d'autres choses:

http://192.9.162.55/developer/technicalArticles/Intl/ResourceBundles/ 
-1

Si vous utilisez IntelliJ IDE juste un clic droit sur le paquet de ressources et aller à nouveau puis sélectionnez Resource Boundle automatiquement créer un fichier .properties pour vous. Cela a fonctionné pour moi.

Questions connexes