Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ResourceBundle可以';在罐子里找不到_Java_Resourcebundle - Fatal编程技术网

Java ResourceBundle可以';在罐子里找不到

Java ResourceBundle可以';在罐子里找不到,java,resourcebundle,Java,Resourcebundle,当我将项目导出到jar时,我遇到了一个问题。当我在Eclipse中运行项目时,ResourceBundle工作正常,但不是从jar运行。我将其导出为导出->jar文件 我在(Windows)cmd->java-jar%projectName%.jar中启动jar。ResourceBundle是: Eclipse:%projectName%->src->language 在jar中:文件夹语言 我这样加载它: ResourceBundle.getBundle("language.Languag

当我将项目导出到jar时,我遇到了一个问题。当我在Eclipse中运行项目时,ResourceBundle工作正常,但不是从jar运行。我将其导出为导出->jar文件

我在(Windows)cmd->java-jar%projectName%.jar中启动jar。ResourceBundle是:

  • Eclipse:%projectName%->src->language
  • 在jar中:文件夹语言
我这样加载它:

ResourceBundle.getBundle("language.Language", currentLocale)
public static String getString(String key) {
        try {
            return ResourceBundle.getBundle("language.Language", currentLocale)
                    .getString(key);
        } catch (MissingResourceException e) {
            return "KEY " + key + " NOT FOUND !";
        }
}
我在Stackoverflow上查看了很多其他的问题,他们的问题总是没有提供从根开始的路径。我不知道为什么这不起作用。我也试着把这些.properties文件放在根目录下

注意:管理这些bundle/locale的类也在相同的包中

提前谢谢

编辑:可能需要一些额外的信息,我通过以下方式获得字符串:

ResourceBundle.getBundle("language.Language", currentLocale)
public static String getString(String key) {
        try {
            return ResourceBundle.getBundle("language.Language", currentLocale)
                    .getString(key);
        } catch (MissingResourceException e) {
            return "KEY " + key + " NOT FOUND !";
        }
}
堆栈跟踪:

Exception in thread "main" java.util.MissingResourceException: Can't find bundle
 for base name language.Language, locale nl_be
        at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
        at java.util.ResourceBundle.getBundleImpl(Unknown Source)
        at java.util.ResourceBundle.getBundle(Unknown Source)
        at language.LanguageModel.getString(LanguageModel.java:33)
        at cli.class.method(class.java:35)
        at main.Main.main(Main.java:26)
特性:

Language_en_US.properties
Language_fr_FR.properties
Language_nl_BE.properties
....

在参数中传递给
ResourceBundle.getBundle()
的区域设置的国家/地区设置为“be”。它应该设置为“be”

您还应该考虑只使用LangEG代码后缀的属性文件,并且在没有后缀的情况下有一个备份包:

  • 语言:在万不得已的情况下使用
  • 语言:当语言为“nl”时将使用
  • Language_nl_BE:如果来自Language_nl的翻译特定于比利时,则应覆盖这些翻译

打印异常的堆栈跟踪,并将其粘贴到问题中。并粘贴
jar的结果-tf yourjar.jar
Trace添加后,您的命令给出:Unrecognized option:-tf Error:无法创建Java虚拟机。错误:发生致命异常。程序将退出。命令是
jar-tf jarFile.jar
,而不是
java-jar-tf jarFile.jar
。但是堆栈跟踪足以识别问题。请看我的答案。它说“jar”无法识别。请将JDK/bin目录放入PATH环境变量中。检查我的答案。它回答了你的问题。我设置currentLocale=newlocale(“nl_BE”);那么它是大写的吗?请检查语言环境的javadoc。它应该是新的语言环境(“nl”、“be”)。错误消息显示:找不到基本名称语言的捆绑包。语言,区域设置nl\U be。所以不,不是大写的。啊,我不知道。谢谢