指定Java本地化文件
|
我正在尝试使用ResourceBundle类为我的应用程序检索特定于语言环境的文本,但是遇到一些错误。
java.lang.ClassCastException: org.project.MyClass cannot be cast to ResourceBundle
java.util.MissingResourceException: Can\'t find bundle for base name org.project.MyClass, locale en_US
我用来创建ResourceBundle的代码如下:
static final ResourceBundle i18ln = ResourceBundle.getBundle(\"org.project.MyClass\", Locale.getDefault());
我已经搜索了大约一个小时,但没有成功指定资源文件的位置。我的项目如下设置:
项目文件夹/
src /
组织/
项目/
MyClass.java
测试/
lib /
分辨率/
图片/
组织/
项目/
MyClass.properties
我的项目的结构是否仅与Java ResourceBundle的结构不兼容?有谁知道我该怎么做?
没有找到相关结果
已邀请:
4 个回复
癸痊醒
辅奈
将尝试实例化名为
的类,然后再尝试加载属性文件。很久以前,人们将他们的代码编译成具体的类是很正常的事情,但是您再也看不到它了。 资源包的文档在javadoc中进行了描述。 首先,它尝试使用候选包加载类 名称。如果可以找到这样的班级 并使用指定的类加载 加载程序,与以下设备兼容 ResourceBundle,可从以下位置访问 ResourceBundle,可以是 实例化后,getBundle创建一个新的 此类的实例,并将其用作 结果资源束。 否则,getBundle尝试查找属性资源文件。它 从生成一个路径名 通过替换所有候选包名称 \“。\”字符和\“ / \”并附加 字符串“ .properties”。它尝试 查找具有此名称的“资源” 使用ClassLoader.getResource。 (注意 在某种意义上说是“资源” getResource与 资源束的内容,它是 只是一个数据容器,例如 文件。)如果找到\“ resource \”,它将 尝试创建一个新的 来自的PropertyResourceBundle实例 它的内容。如果成功的话 实例成为结果资源 束。 如果没有结果资源束 找到一个MissingResourceException是 抛出。 按照惯例,许多项目都使用属性文件的相关程序包名称。例如,软件包“ 5”将具有用于10n资源的随附的软件包“ 6”。
功飘
襄挟款籍
和
。 这似乎是特定于平台的;在我的情况下,我可以在Mac上本地构建,但是当推送到Team City Linux构建代理时,构建失败,但例外。