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

时间:2012-10-20 07:16:12

标签: 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)

有什么想法吗?

12 个答案:

答案 0 :(得分:53)

异常告诉我们在类路径的根目录中需要Bundle_en_US.propertiesBundle_en.properties或至少Bundle.properties个文件,但实际上没有。

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

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

另见:

答案 1 :(得分:10)

行家-Tomcat的插件

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

答案 2 :(得分:4)

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

答案 3 :(得分:2)

在我的情况下,问题是使用语言标记" en_US"在-L/usr/local/lib -lcurl代替" en-US" - 使用短划线代替下划线!

还可以使用Locale.forLanguageTag(..)代替Locale.forLanguageTag("en-US")new Locale("en_US")来定义语言(" en")与区域(" US") - 但new Locale("en_US")有效。

答案 4 :(得分:1)

就我而言,我正在处理 SpringBoot 项目,但遇到了相同的例外。

解决方案是通过将env.properties文件添加到类路径(即src / main / resource文件夹)来完成的。造成此问题的原因是,在log4j配置中有

之类的属性

<Property name="basePath">${bundle:env:log.file.path}</Property>

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

希望这对你有所帮助。

答案 7 :(得分:0)

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

我希望它有所帮助。

答案 8 :(得分:0)

请确保您没有将属性文件添加到错误的资源文件夹中,因为“网页”下有一个文件,“其他来源/ ...”下有一个文件。它们必须位于“其他来源/ ...”下。

答案 9 :(得分:0)

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

尝试使用此方法时,请确保确保classpath conf文件显示资源目录的classpath条目(例如cfg /)

答案 10 :(得分:0)

在maven文件夹资源中,创建与配置文件相同的包结构,然后将其复制到其中

答案 11 :(得分:0)

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