Java ResourceBundle - PullRequest
       10

Java ResourceBundle

0 голосов
/ 28 ноября 2018

Я не программировал на Java в течение нескольких месяцев, и у меня есть небольшое приложение для собственного использования.Я застрял на ResourceBundle!Я помню, что он очень прост в использовании, поэтому я думаю, что мою проблему очень легко решить, но мне нужны новые глаза:)

Locale frLocale = new Locale("fr","CA");
Locale enLocale = new Locale("en","CA");

String dir = System.getProperty("user.dir");
System.out.println("current dir = " + dir); // current dir = D:\RP1.8.2

Path p = FileSystems.getDefault().getPath(dir,"test.properties");
System.out.println("Path : "+p.toAbsolutePath().toString()); // Path : D:\RP1.8.2\test.properties

boolean exists = Files.exists(p);
System.out.println("File found: "+exists); // File found: true

ResourceBundle bundle = ResourceBundle.getBundle(p.toAbsolutePath().toString());
/* Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name D:\RP1.8.2\test.properties, locale fr_CA */

String title = bundle.getString("main.title");
System.out.println("Titre = "+title);

Итак, мой файл свойств существует, но ResourceBundle не находит его ...странно.В каталоге пользователя у меня есть 3 файла: test.properties, test_fr.properties и test_fr_CA.properties

Любой ключ для меня?Спасибо

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Аргумент getBundle не является именем файла и фактически не должен быть именем файла.Файлы ResourceBundle являются ресурсами приложения, и должны быть расположены в том же месте, что и ваши скомпилированные классы.(На самом деле ResourceBundle может быть реальным классом Java вместо файла свойств.) Например:

build
└─classes
  └─com
    └─example
      └─myapp
        ├─MyWindow.class
        ├─MyDataImporter.class
        ├─test.properties
        ├─test_fr.properties
        └─test_fr_CA.properties

Код:

ResourceBundle bundle = ResourceBundle.getBundle("com.example.myapp.test");
0 голосов
/ 28 ноября 2018

Если это проект maven, тогда я бы щелкнул правой кнопкой мыши по проекту и в разделе «Инструменты M2» выбрал бы генерировать артефакты (проверить наличие обновлений), а затем нажать «генерировать OSGI-связки»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...