【问题标题】:Can't find bundle for base name /Bundle, locale en_US找不到基本名称 /Bundle 的捆绑包,语言环境 en_US
【发布时间】:2012-10-10 18:36:41
【问题描述】:

我正在使用一个依赖于 JSF 的库。

当我尝试运行我的项目时,它显示以下异常消息..

java.util.MissingResourceException: Can't find bundle for base name /Bundle, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1427)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1250)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:705)

有什么想法吗?

【问题讨论】:

  • 看起来你走错了路。
  • 你可以试试看这个答案Here
  • 在您的位置创建Bundle.properties 文件:src/main/webapp/WEB-INF/classes
  • 尝试在这个路径 src/main/resources 上创建一个资源文件夹,然后使用 Android 上的 ResourceBundle 从那里放置或获取您的文件。 stackoverflow.com/a/44452218/1718223

标签: java jsf


【解决方案1】:

例外情况是在类路径的根目录中需要 Bundle_en_US.propertiesBundle_en.properties 或至少 Bundle.properties 文件,但实际上没有。

确保至少有一个上述文件存在于类路径的根目录中。或者,确保您提供正确的捆绑包名称。例如,如果 bundle 文件实际上是放在包 com.example.i18n 中,那么您需要传递 com.example.i18n.Bundle 作为 bundle 名称而不是 Bundle

如果您使用的是 Eclipse“动态 Web 项目”,则类路径根目录由 src 文件夹表示,所有 Java 包都位于该文件夹中。如果您使用的是 Maven 项目,则资源文件的类路径根由 src/main/resources 文件夹表示。

另见:

【讨论】:

  • 正如这里也提到的,如果你在一个 Maven 项目中,手动在 src/main/ 中创建一个新的“resources”文件夹并将你所有的资源放在里面。清理 -> 再次构建并运行项目,资源将被拾取。
【解决方案2】:

maven-tomcat 插件

如果您使用maven-tomcat-plugin / maven-tomcat7-plugin 启动项目,则必须将Bundle.properties 甚至Resource.properties 放在src/main/webapp/WEB-INF/classes 中。不要问为什么,因为插件是如何伪造tomcat的。

【讨论】:

  • 在将 .properties 文件移动到 WEB-INF/classes 之后(甚至在其下创建另一个包装文件夹),它就可以工作了。投票并感谢!
  • 非常感谢 Grim 和 lannyf,因为他们的信息帮助我解决了 Resin Web 服务器上的类似问题。我正在处理一个项目,其中属性文件与webapps/ROOT/WEB-INF/lib/ 中的.jar 文件一起存储。 webapps/ROOT/WEB-INF/classes/ 中没有任何内容。当我尝试将此设置复制到新服务器时,出现错误“Caught exception: Can't find base number for bundle X, locale en”。但是,当我在webapps/ROOT/WEB-INF/classes/ 中创建一个指向lib/ 文件夹中的.properties 文件的符号链接时,它解决了这个问题。非常感谢!
【解决方案3】:

如果您在 Eclipse 中运行 .java 文件,您需要在构建路径中添加资源路径。 之后你就不会看到这个错误了

【讨论】:

  • 你能说得更具体点吗?
  • 右键单击项目>属性(alt + enter)> Java Builder路径>源>添加文件夹...
【解决方案4】:

我遇到了同样的问题,balus 解决方案解决了它。

记录在案:

WEB-INF\faces-config 是

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
    <application>
        <locale-config>
            <default-locale>en</default-locale>
        </locale-config>
        <message-bundle>
            Message
        </message-bundle>
    </application>
</faces-config>

并且在 WebContent\Resources 下有 Message.properties(在 mkyong 的教程之后)

即使我将包重命名为“Message_en_us”和“Message_en”,也会出现令人讨厌的异常。将其移至 src\ 工作。

如果有人发布缺失的部分以使捆绑包在资源下工作,那将是一件美好的事情。

【讨论】:

    【解决方案5】:

    在我的情况下,问题是在Locale.forLanguageTag(..) 中使用语言标签“en_US”而不是“en-US” - 使用破折号而不是下划线!

    也可以使用Locale.forLanguageTag("en-US") 而不是new Locale("en_US")new Locale("en_US") 来定义带有地区(“US”)的语言(“en”) - 但new Locale("en") 有效。

    【讨论】:

      【解决方案6】:

      在我的情况下,我正在处理 SpringBoot 项目,我遇到了同样的异常。

      解决方法是将 env.properties 文件添加到类路径(即 src/main/resource 文件夹)。造成问题的是,在 log4j 配置中有类似

      的属性

      &lt;Property name="basePath"&gt;${bundle:env:log.file.path}&lt;/Property&gt;

      【讨论】:

        【解决方案7】:

        Bundle.properties 文件必须在.class 文件的目录中。如果它位于src 目录中,那么您需要确保将其复制到同一包中的bin(输出)目录中。

        【讨论】:

          【解决方案8】:

          我在使用 Netbeans 时遇到了同样的问题。我去了项目文件夹并复制了属性文件。我认为单击“构建”,然后单击“类”。我在该文件夹中添加了属性文件。这解决了我的问题。

          【讨论】:

            【解决方案9】:

            我使用 Eclipse(没有 Maven),所以我将 .properties 文件放在还包含 java 源代码的 src 文件夹中,以便在构建项目后将 .properties 文件放在 classes 文件夹中.它工作正常。 看看这个帖子:https://www.mkyong.com/jsf2/cant-find-bundle-for-base-name-xxx-locale-en_us/

            希望对您有所帮助。

            【讨论】:

              【解决方案10】:

              问题一定是 faces-config.xml 文件中的 resource-bunde > base-name 属性具有不同的属性路径。这发生在我的 firstcup Java EE 教程中,我在创建项目时给了一个不同的包名称,然后 Glassfish 无法找到“firstcup.web”上的属性文件夹。

              希望对你有帮助。

              【讨论】:

                【解决方案11】:

                确保您没有在错误的资源文件夹中添加属性文件,因为在“网页”下有一个,在“其他来源/...”下有一个。他们需要在“其他来源/...”下。

                【讨论】:

                  【解决方案12】:

                  我能够解决问题,资源在我的项目目录中,但是当 junit 实用程序尝试加载它时,它返回 MissingResourceException 错误。原因是资源不在测试类包的类路径中,所以当我在 eclipse 中将 cfg/ 文件夹添加到我的类路径路径条目并将构建 conf 中的输出目录设置为同一个类包时,问题是解决了。​​

                  当您尝试这种方法时,只需确保类路径 conf 文件显示资源目录的类路径条目(例如 cfg/)

                  【讨论】:

                    【解决方案13】:

                    在maven中,文件夹资源,在配置文件所在的地方创建相同的包结构并复制到那里

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-06-11
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多