2013-11-26 69 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:無法找到基本名稱基本的語言環境en_US – user2999888

+0

您是否可以嘗試使用bundle目錄的絕對路徑,而不是您在文章中描述的相對路徑。 –

+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

如果您的文件位於/resource/basic_fr_CA.properties位置,那麼我沒有找到您 – user2999888

+0

,然後將您的java代碼更改爲ResourceBundle.getBundle(「resources.basic」,new Locale(「fr」,「CA」)); –

+0

我做到了。但同樣的錯誤。 java.util.MissingResourceException:無法找到基本名稱basic,locale的bundle fr_CA – user2999888

相關問題