2013-03-15 60 views
1

我將項目導出到jar時出現問題。當我在Eclipse中運行項目時,ResourceBundles工作正常,但不能從jar中運行。我將它導出爲Export - > jar文件。在jar中找不到ResourceBundle

我在(Windows)cmd - > java -jar%projectName%.jar中啓動jar。在把ResourceBundle是:

  • 的Eclipse:%項目名稱% - > SRC - >語言
  • 在罐子裏:文件夾的語言。

我加載這樣說:

ResourceBundle.getBundle("language.Language", currentLocale) 

我看着#2這個很多其他的問題和他們的問題總是,他們並沒有提供從根目錄的路徑。我不知道爲什麼這不起作用。我也嘗試將這些.properties文件放在根目錄中...

注意:管理這些軟件包/語言環境的類也位於相同的軟件包中。

在此先感謝。

編輯:也許一些額外的信息,我得到的字符串是這樣的:

public static String getString(String key) { 
     try { 
      return ResourceBundle.getBundle("language.Language", currentLocale) 
        .getString(key); 
     } catch (MissingResourceException e) { 
      return "KEY " + key + " NOT FOUND !"; 
     } 
} 

堆棧跟蹤:

Exception in thread "main" java.util.MissingResourceException: Can't find bundle 
for base name language.Language, locale nl_be 
     at java.util.ResourceBundle.throwMissingResourceException(Unknown Source) 
     at java.util.ResourceBundle.getBundleImpl(Unknown Source) 
     at java.util.ResourceBundle.getBundle(Unknown Source) 
     at language.LanguageModel.getString(LanguageModel.java:33) 
     at cli.class.method(class.java:35) 
     at main.Main.main(Main.java:26) 

性能:

Language_en_US.properties 
Language_fr_FR.properties 
Language_nl_BE.properties 
.... 
+0

打印異常的堆棧跟蹤,並將其粘貼喲你的問題。並粘貼'jar -tf yourjar.jar'的結果 – 2013-03-15 22:06:40

+1

跟蹤添加,您的命令給出:無法識別的選項:-tf 錯誤:無法創建Java虛擬機。 錯誤:發生了致命異常。程序將會退出。 – Aaron 2013-03-15 22:15:54

+0

該命令是'jar -tf jarFile.jar',而不是'java -jar -tf jarFile.jar'。但是堆棧跟蹤足以識別問題。看到我的答案。 – 2013-03-15 22:33:42

回答

3

你通過語言環境在參數ResourceBundle.getBundle()有它的數量ry設置爲「be」。應該設置爲「BE」。

你也應該考慮使用只用langage代碼後綴屬性文件,並有不帶後綴一個備份包都:

  • 語言:將在不得已
  • Language_nl使用:將使用當語言是「NL」
  • Language_nl_BE:應該從Language_nl覆蓋翻譯,如果他們具體到比利時
+1

我設置了currentLocale = new Locale(「nl_BE」);那是在首都嗎? – Aaron 2013-03-15 22:39:34

+1

檢查Locale的javadoc。它應該是'新Locale(「nl」,「BE」)'。該錯誤消息說:*找不到包 的基本名稱language.Language,區域設置nl_be *。所以不,它不是大寫字母。 – 2013-03-15 22:48:39

+1

啊,不知道。謝謝! – Aaron 2013-03-15 22:54:29