无法找到基本名称/ Bundle,locale en_US的包

Md.*_*man 36 java jsf

我正在使用一个依赖于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)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

Bal*_*usC 55

例外是告诉类路径的根目录中是a Bundle_en_US.properties,或者Bundle_en.properties至少Bundle.properties是文件,但实际上没有.

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

如果您正在使用Eclipse"Dynamic Web Project",则类路径根由src文件夹表示,您的所有Java包都在其中.如果您正在使用Maven项目,则资源文件的类路径根由文件src/main/resources夹表示.

也可以看看:


Pet*_*der 9

Maven的Tomcat的插件

如果使用maven-tomcat-plugin/ 启动项目maven-tomcat7-plugin,则必须放置Bundle.properties,甚至Resource.properties放入src/main/webapp/WEB-INF/classes.不要问为什么,它因为插件如何伪造一个tomcat.

  • 将.properties文件移动到WEB-INF/classes之后(甚至在其下创建另一个包装器文件夹)它可以工作.投票和谢谢! (2认同)

小智 6

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

  • 右键单击项目>属性(alt +输入)> Java Builder路径>源>添加文件夹... (2认同)

dem*_*onz 5

我有同样的问题,并且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>
Run Code Online (Sandbox Code Playgroud)

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

即使我将包重命名为"Message_en_us"和"Message_en",也会出现令人讨厌的异常.把它移到src\working.

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


ele*_*abe 5

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

也可以使用Locale.forLanguageTag("en-US")代替new Locale("en_US")new Locale("en_US")来定义具有区域(“美国”)的语言(“en”) - 但new Locale("en")有效。