Не удается найти пакет для базового имени
Я использую библиотеку, которая имеет зависимость от 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, все равно не пошел.
Любые идеи?
Ответы
Ответ 1
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
Также см. собственный учебник по ресурсам о ресурсах.
Но поскольку это фактически файл с управляемыми свойствами сторонних разработчиков, вы не должны создавать его самостоятельно. Он должен быть уже доступен в JAR файле JFreeChart. Поэтому убедитесь, что он доступен в пути к классам во время выполнения. Также убедитесь, что вы используете правильную версию, расположение файла свойств внутри дерева пакетов может быть изменено в версии JFreeChart.
При выполнении JAR файла вы можете использовать аргумент -cp
для указания пути к классам. Например:.
java -jar -cp c:/path/to/jfreechart.jar yourfile.jar
В качестве альтернативы вы можете указать путь к классу как class-path
в файле манифеста JAR. Вы можете использовать там относительные пути, которые относятся к самому файлу JAR. Не используйте не переменную среды %CLASSPATH%
, она игнорируется JAR и все остальное, которые не выполняются с java.exe
без -cp
, -classpath
и -jar
.
Ответ 2
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
Ответ 3
Когда вы создаете инициализацию ResourceBundle, вы также можете сделать это.
Для тестирования и разработки я создал файл свойств в \src с именем prp.properties.
Используйте этот способ:
ResourceBundle rb = ResourceBundle.getBundle("prp");
Соглашение об именовании и прочее:
http://192.9.162.55/developer/technicalArticles/Intl/ResourceBundles/
Ответ 4
Если вы используете IntelliJ IDE, просто щелкните правой кнопкой мыши на пакете ресурсов и перейдите к новому, а затем выберите "Ограничение ресурсов", оно автоматически создаст для вас файл .properties. Это работало для меня.