Не могу найти пакет для базового имени - PullRequest
25 голосов
/ 18 января 2010

Я использую библиотеку, которая зависит от jfreechart (v 1.0.9).

Когда я пытаюсь запустить .jar, я получаю:

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)

Я пытался создать файл LocalizationBundle.properties, но этого не произошло. Я проверил CLASSPATH, до сих пор нет.

Есть идеи?

Ответы [ 4 ]

35 голосов
/ 18 января 2010
java.util.MissingResourceException: Can't find bundle for base name
    org.jfree.chart.LocalizationBundle, locale en_US

Кстати, в сообщении об исключении подробно говорится о том, что в пути к классам должен быть любой из следующих файлов:

/org/jfree/chart/LocalizationBundle.properties

или

/org/jfree/chart/LocalizationBundle_en.properties

или

/org/jfree/chart/LocalizationBundle_en_US.properties

Также см. Собственный учебник Sun по ресурсам для получения дополнительной информации.

Но поскольку на самом деле это файл управляемых свойств сторонних разработчиков, вам не следует создавать его самостоятельно. Он должен быть уже доступен в файле JAR JFreeChart. Поэтому убедитесь, что он доступен в classpath во время выполнения. Также убедитесь, что вы используете правильную версию, расположение файла свойств внутри дерева пакетов может измениться для каждой версии JFreeChart.

При выполнении файла JAR вы можете использовать аргумент -cp, чтобы указать путь к классу. E.g.:

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

В качестве альтернативы вы можете указать classpath как запись class-path в файле манифеста JAR. Там вы можете использовать относительные пути, относящиеся к самому файлу JAR. не используйте переменную окружения %CLASSPATH%, она игнорируется JAR-файлами и всем остальным, что не выполняется с java.exe без -cp, -classpath и -jar аргументы.

2 голосов
/ 18 января 2010

BalusC прав. Версия 1.0.13 является текущей, но 1.0.9, кажется, имеет необходимые пакеты:

$ 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
1 голос
/ 18 декабря 2017

Если вы используете IntelliJ IDE, просто щелкните правой кнопкой мыши на пакете ресурсов и перейдите к новому, а затем выберите Resource Boundle, он автоматически создаст файл .properties. Это сработало для меня.

0 голосов
/ 25 февраля 2013

Когда вы создаете инициализацию ResourceBundle, вы можете сделать это также.

Для тестирования и разработки я создал файл свойств в \ src с именем prp.properties.

Используйте этот способ:

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

Соглашение об именах и прочее:

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