2013-11-26 2 views
3

У меня есть код для интернационализации приложения. Мне нужно загрузить файл пакета, дважды вернуться из рабочего места и загрузить его.Как получить файл пакета ресурсов из каталога в java?

Мой код,

bundle = ResourceBundle.getBundle("../../resources/basic",new Locale("fr", "CA")); 
lblUsername.setText(bundle.getString("username")); 
lblPassword.setText(bundle.getString("password")); 
btnLogin.setText(bundle.getString("login")); 

я получил следующее сообщение об ошибке.

java.util.MissingResourceException: Can't find bundle for base name ../../resources/basic, locale fr_CA 
at java.util.ResourceBundle.throwMissingResourceException(Unknown Source) 
at java.util.ResourceBundle.getBundleImpl(Unknown Source) 
at java.util.ResourceBundle.getBundle(Unknown Source) 
at com.daycare.ui.user.Login$4.itemStateChanged(Login.java:248) 
at javax.swing.JComboBox.fireItemStateChanged(Unknown Source) 
at javax.swing.JComboBox.selectedItemChanged(Unknown Source) 
at javax.swing.JComboBox.contentsChanged(Unknown Source) 
at javax.swing.AbstractListModel.fireContentsChanged(Unknown Source) 
at javax.swing.DefaultComboBoxModel.setSelectedItem(Unknown Source) 
at javax.swing.JComboBox.setSelectedItem(Unknown Source) 
at javax.swing.JComboBox.setSelectedIndex(Unknown Source) 
at com.daycare.ui.user.Login.<init>(Login.java:372) 
at com.daycare.ui.user.Login$1.run(Login.java:104) 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$200(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

Как я могу указать правильный путь к файлу budle?

Спасибо заранее!

+0

делает ваш пакет существует в указанном месте, что имя вашего пакета ресурсов –

+0

делает basic_fr_CA .properties существует в указанном месте –

+0

Да существуют. Имя файла является основным. Это файл свойств – user2999888

ответ

5

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

File file = new File("the path of the folder containing the bundles"); 
URL[] urls = new URL[]{file.toURI().toURL()}; 
ClassLoader loader = new URLClassLoader(urls); 
ResourceBundle rb = ResourceBundle.getBundle("the bundle name", your_locale, loader); 
+0

У меня эта ошибка. java.util.MissingResourceException: Не удается найти пакет для базового имени basic, locale en_US – user2999888

+0

Можете ли вы попробовать абсолютный путь для каталога пакетов, а не относительный, как описано в сообщении. –

+0

Да. Я пытался. Но такая же ошибка. – user2999888

0
ResourceBundle.getBundle("../../resources/basic",new Locale("fr", "CA")); 

изменить первый аргумент полное имя класса и убедитесь, что basic_fr_CA.properties существует.

, например , если файл находится в

/resource/basic_fr_CA.properties location, 

затем изменить код Java для

ResourceBundle.getBundle("resources.basic",new Locale("fr", "CA")); 
+0

Я не получил вас – user2999888

+0

, если ваш файл находится в каталоге /resource/basic_fr_CA.properties, а затем измените свой Java-код на ResourceBundle.getBundle («resources.basic», новый Locale («fr», «CA»)); –

+0

сделал. но та же ошибка. java.util.MissingResourceException: Не удается найти пакет для базового имени basic, locale fr_CA – user2999888

Смежные вопросы