指定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的结构不兼容?有谁知道我该怎么做?     
已邀请:
MyClass.java是ResourceBundle的某种子类吗?我怀疑不是,因此是ClassCastException。 如果MyClass不是ResourceBundle类型的,请尝试将该MyClass.properties重命名为MyResource.properties之类的其他名称,然后将res目录放在类路径中以找到资源包。确保使用ResourceBundle.getResource时更改资源名称,如下所示:
static final ResourceBundle i18ln = ResourceBundle.getBundle(\"org.project.MyResource\", Locale.getDefault());
    
ResourceBundle
将尝试实例化名为
org.project.MyClass
的类,然后再尝试加载属性文件。很久以前,人们将他们的代码编译成具体的类是很正常的事情,但是您再也看不到它了。 资源包的文档在javadoc中进行了描述。      首先,它尝试使用候选包加载类   名称。如果可以找到这样的班级   并使用指定的类加载   加载程序,与以下设备兼容   ResourceBundle,可从以下位置访问   ResourceBundle,可以是   实例化后,getBundle创建一个新的   此类的实例,并将其用作   结果资源束。   否则,getBundle尝试查找属性资源文件。它   从生成一个路径名   通过替换所有候选包名称   \“。\”字符和\“ / \”并附加   字符串“ .properties”。它尝试   查找具有此名称的“资源”   使用ClassLoader.getResource。 (注意   在某种意义上说是“资源”   getResource与   资源束的内容,它是   只是一个数据容器,例如   文件。)如果找到\“ resource \”,它将   尝试创建一个新的   来自的PropertyResourceBundle实例   它的内容。如果成功的话   实例成为结果资源   束。         如果没有结果资源束   找到一个MissingResourceException是   抛出。 按照惯例,许多项目都使用属性文件的相关程序包名称。例如,软件包“ 5”将具有用于10n资源的随附的软件包“ 6”。     
您在res文件夹中有MyClass.properties。将MyClass.properties复制到src文件夹中,它应该可以工作。     
当属性文件和类的大小写不匹配时,也会发生此问题。例如:
MyClass.java
mcyclass.properties
。 这似乎是特定于平台的;在我的情况下,我可以在Mac上本地构建,但是当推送到Team City Linux构建代理时,构建失败,但例外。     

要回复问题请先登录注册