我使用Eclipse Oxygen.2 Release(4.7.2)并尝试开发一种笔&纸质角色创建程序,作为学习使用xml和属性等不同文件的练习。
我的 ResBundle.properties -file如下所示:
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"));
我仍然得到例外:
无法找到包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);
我在这个问题中找到的答案最多,处理相同的例外情况。但是他们只告诉我如何将属性文件移动到我的源foulder / class路径文件夹中。我之前有过Exception并移动了文件,所以现在它位于 lib / lang 文件夹中,我作为源文件夹(使用Eclipse)添加到我的构建路径中。之后,我会继续编程,直到我收到上述的Exception消息。
当我只使用另一个密钥进行测试时,它可以工作。我试图在属性文件和程序中重命名密钥,但仍然会发生异常。
最奇怪的是,它已经起作用了。我可以通过一个按钮和相同的键打开第二个JFrame!这意味着
" sc.title"
和我在第二个JFrame中使用的其他键,没有抛出异常。在对其他摆动组件进行一些调整之后,由于异常,我无法启动我的程序。
我发现了类似的问题:
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无法找到密钥。我认为我有属性文件的正确结构,我不知道,为什么它不工作。
非常感谢能帮助我一点或多少的人。
编辑(回答@arthur):
我当前的文件夹结构 - 根文件夹:
LIB /郎/ ResBundle.properties
Eclipse告诉我,我将文件夹包括在内如下答案 0 :(得分:1)
我发现了自己的错误而且非常抱歉我发布了一个问题,这个问题有一个简单的解决方案。我检查了使用资源包密钥的行并没有工作一百次,但刚才我注意到,我对括号感到困惑。它应该是
String str = ResourceBundleVariable.getString(“key”);
我犯了错误,我在 getString 方法本身的括号中包含了返回 getString 方法的字符串。这样它就会搜索密钥:“key:”而不是正确的密钥:“key”。我的错误代码:
String str = ResourceBundleVariable.getString("key"+": "); //ATTENTION Code not operating as intended
正确代码现在按预期工作:
String str = ResourceBundleVariable.getString("key")+": ";