簡體   English   中英

從 jar 中加載 ResourceBundle

[英]Loading with ResourceBundle from inside a jar

我已經看到了一些關於如何通過getResourceAsStream在 jar 中加載特定文件的答案,我可以管理它。 但是,我面臨着一些非常具體的問題,我在論壇上找不到有關此問題的答案。

這是配置:

我有一個 jar 文件,其中包含 2 個屬性文件messages_en_US.propertiesmessages_fr_FR.propertiesconf目錄。 加載此類資源的經典方法是使用

ResourceBundle.getBundle("messages", java.util.Locale.getDefault());

如果文件在磁盤上,在程序類路徑引用的目錄中,這可以正常工作。 但我不知道如何管理ResourceBundle.getBundle 的組合使用和 jar 中資源的使用。 事實上,因為我無法通過getResourceAsStream看到任何橋梁(或者這意味着我自己管理語言環境以指定整個資源文件名,這不是很聰明)。

如果它位於 jar 內的 conf 目錄中,那么您嘗試加載的包的包是conf ,您應該使用

ResourceBundle.getBundle("conf.messages", java.util.Locale.getDefault());

javadoc說:

baseName - the base name of the resource bundle, a fully qualified class name

你試過這個嗎?

ResourceBundle.getBundle("conf/messages", java.util.Locale.getDefault());

ResourceBundle 始終搜索屬性文件,因此,如果您運行:

ResourceBundle.getBundle("messages", java.util.Locale.getDefault());

ResourceBundle 將在您的類路徑中搜索“messages.properties”。

假設文件 messages.properties 是某個 xyz.jar 的一部分,該文件已經在您要使用它的項目的類路徑上。 這個文件在 jar 中的打包如下:

src
   |main
       |resources
            |com
                |xyz
                   ....|message.properties 

要讀取此文件:

import java.util.ResourceBundle;

....

ResourceBundle.getBundle("com.xyz.resources.messages", Locale.getDefault());

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM