我使用的是依赖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)
有什么想法吗?
答案 0 :(得分:53)
异常告诉我们在类路径的根目录中需要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
文件夹表示。
答案 1 :(得分:10)
如果您使用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
(输出)目录。