Nu se poate găsi pachetul pentru numele bazei (Programare, Java, Jfreechart)

Shane Castle a intrebat.

Folosesc o bibliotecă care are o dependență de jfreechart (v 1.0.9).

Când încerc să execut .jar, primesc:

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)

Am încercat să creez un fișier LocalizationBundle.properties, dar nu a funcționat. Am verificat CLASSPATH, dar tot nu merge.

Aveți vreo idee?

4 răspunsuri
BalusC
java.util.MissingResourceException: Can't find bundle for base name
    org.jfree.chart.LocalizationBundle, locale en_US

La obiect, mesajul de excepție spune în detaliu că trebuie să aveți în classpath unul dintre următoarele fișiere:

/org/jfree/chart/LocalizationBundle.properties

sau

/org/jfree/chart/LocalizationBundle_en.properties

sau

/org/jfree/chart/LocalizationBundle_en_US.properties

Vezi și tutorialul oficial Java despre resourcebundles pentru mai multe informații.

Dar, deoarece acesta este de fapt un fișier de proprietăți gestionat de o terță parte, nu ar trebui să creați unul singur. Acesta ar trebui să fie deja disponibil în fișierul JAR JFreeChart. Deci, asigurați-vă că îl aveți disponibil în classpath în timpul execuției. De asemenea, asigurați-vă că utilizați versiunea corectă, locația fișierului de proprietăți în cadrul arborelui de pachete ar putea fi să se fi schimbat în funcție de versiunea JFreeChart.

Atunci când executați un fișier JAR, puteți utiliza opțiunea -cp pentru a specifica classpath-ul. De exemplu:

java -jar -cp c:/path/to/jfreechart.jar yourfile.jar

Alternativ, puteți specifica classpath-ul ca class-path intrare în fișierul manifest al JAR. Puteți utiliza acolo căi relative care sunt relative la fișierul JAR în sine. Faceți nu folosiți %CLASSPATH% variabila de mediu, aceasta este ignorată de JAR-uri și de orice altceva care nu este executat cu java.exe fără -cp, , -classpath și -jar argumente.

Comentarii

  • De asemenea, merită să verificați dacă nu aveți greșeli de scriere în numele bundle-ului, am petrecut 30 de minute depanându-mi aplicația doar pentru a-mi da seama că atunci când mi-am redenumit bundle-ul din IDE am adăugat din greșeală un spațiu în fața lui (am lucrat pe o cutie Linux, așa că sistemul de operare nu se plânge). Facepalm… –  > Por csharpfolk.
trashgod

BalusC are dreptate. Versiunea 1.0.13 este cea curentă, dar 1.0.9 pare să aibă pachetele necesare:

$ 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

mmdreza baqalpour

Dacă folosiți IntelliJ IDE, faceți clic dreapta pe pachetul de resurse și mergeți la nou și apoi selectați Resource Boundle, acesta creează automat un fișier .properties pentru dvs. Acest lucru a funcționat pentru mine .

Franky

Când creați o inițializare a ResourceBundle, puteți face și în acest mod.

Pentru testare și dezvoltare, am creat un fișier de proprietăți în src cu numele prp.properties.

Folosiți acest mod:

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

Convenție de denumire și alte chestii:

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