从jar内部加载ResourceBundle
我已经看到了一些关于如何通过getResourceAsStream在jar中加载特定文件的答案,我可以管理它。 但是我面对的是一些非常具体的内容,我在论坛上找不到相关答案。
这是配置:
我有一个jar文件,其conf目录包含2个属性文件messages_en_US.properties和messages_fr_FR.properties 。 加载这些资源的经典方法是使用
ResourceBundle.getBundle("messages", java.util.Locale.getDefault());
如果文件在磁盘上,则在programm类路径引用的目录中,这可以正常工作。 但我不知道如何管理ResourceBundle.getBundle的使用和从jar中使用资源。 实际上,因为我看不到通过getResourceAsStream的任何桥接(或者这意味着我自己管理语言环境以指定整个资源文件名,这不是很聪明)。
有人可以帮忙吗?
谢谢。
如果它在jar内的conf目录中,那么你想要加载的bundle的包是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());
谢谢