java - 找不到 bundle java.util.PropertyResourceBundle、sc.title 的资源

标签 java

我使用 Eclipse Oxygen.2 Release (4.7.2) 并尝试开发笔纸字符创建程序作为学习使用不同文件(如 xml 和属性)的练习。

我的ResBundle.properties文件如下所示:

cc.male=male
cc.female=female
cc.askForGender=Choose a gender for your hero

sc.btnStart=Start\n Creation
sc.title=Creation of a Setting
sc.creationProps=Creation Properties
sc.creationPropsComment=Properties for character creation

它更长,有 60 行代码,与所示部分类似。我的主 JFrame 使用如下所示的文件:

JMenuItem mntmNewchar = new JMenuItem(lang.getString("gui.char.new"));

我用来创建新角色/世界的第二个 JFrame 具有相同的代码。例如:

setTitle(lang.getString("sc.title"));

我仍然遇到异常:

Can't find resource for bundle java.util.PropertyResourceBundle, key sc.title

我的主要方法:

try {
    lang = ResourceBundle.getBundle("ResBundle", new Locale("en"));
} catch(MissingResourceException e) {
    e.printStackTrace();
}
mainFrame = new MainFrame();
mainFrame.setVisible(true);

我发现这个问题的大多数答案都涉及相同的异常。但他们只告诉我如何将属性文件移动到我的源代码/类路径文件夹中。我之前遇到过异常并移动了文件,所以现在它位于文件夹 lib/lang 中,我将其作为源文件夹添加到我的构建路径中(使用 Eclipse)。之后,我可以继续编程,直到收到上述异常消息。

当我仅使用另一个 key 进行测试时,它可以工作。我尝试重命名属性文件和程序中的 key ,但仍然出现异常。

最奇怪的部分是,它已经起作用了。我可以通过按钮和同一个键打开第二个 JFrame!,这意味着

"sc.title"

和我在第二个 JFrame 中使用的其他键,没有抛出异常。就在对其他 Swing 组件进行了一些修改之后,由于该异常,我无法再启动我的程序。

我发现了这个类似的问题:

java.util.missingresourceexception: Can't find resource for bundle java.util.ResourceBundle, key

我在第一行插入了一个换行符,但这没有任何改变。我还发现了一个6个月前提出的问题,但仍然没有答案。但这仍然是与我遇到的问题相同的问题:

Java - ResourceBundle Can't find resource for bundle java.util.PropertyResourceBundle

我希望有人可以帮助我或描述一下为什么 JVM 找不到 key 。我认为我的属性文件结构正确,但我不知道为什么它不起作用。

非常感谢所有可以帮助我一点或很多的人。


编辑(回答@arthur):

我当前的文件夹结构-根文件夹:

fodler tree

lib/lang/ResBundle.properties

Eclipse 向我显示,我包含了如下文件夹

  • 我的 java 项目的 Eclipse 属性。显示选项卡“Java Build Path”

Eclipse properties for my java project. The tab "Java Build Path" ist shown

最佳答案

我发现了我的错误,对于我发布的问题有如此简单的解决方案,我深感抱歉。我检查了使用资源包 key 的行并且无法工作一百次,但刚才我注意到,我对括号感到困惑。应该是

String str = ResourceBundleVariable.getString("key");

我犯了一个错误,我将 getString 方法返回后的字符串包含在 getString 方法本身的括号中。这样它就会搜索 key :“key:”,而不是正确的 key :“key”。我的错误代码:

String str = ResourceBundleVariable.getString("key"+": "); //ATTENTION Code not operating as intended

正确代码现在按预期工作:

String str = ResourceBundleVariable.getString("key")+": ";

关于java - 找不到 bundle java.util.PropertyResourceBundle、sc.title 的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49449092/

相关文章:

java - 需要在反射(reflection)时弄脏我的手

java - 如何通过单元测试测试时区方法?

java - 来自字符串的 WebTarget

c# - 对象是类,因为枚举是...?

java - 方法上没有@ResponseBody 的@RestController 工作不正确

当我启动一个线程时,Java 游戏一直卡住?

java - 在 GWT 中查找应用程序名称

Java C3P0 池化数据库连接导致 "Unable to obtain storage for thread control block"

java - AssertEquals 不会停止测试

对象序列化期间Java堆溢出