[英]Java load ResourceBundle inside WAR that contains several jar with their ResourceBundle
[英]Loading with ResourceBundle from inside a jar
我已經看到了一些關於如何通過getResourceAsStream在 jar 中加載特定文件的答案,我可以管理它。 但是,我面臨着一些非常具體的問題,我在論壇上找不到有關此問題的答案。
這是配置:
我有一個 jar 文件,其中包含 2 個屬性文件messages_en_US.properties和messages_fr_FR.properties的conf目錄。 加載此類資源的經典方法是使用
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.