找不到基本名称为bundle的包

29

我正在使用一个依赖于jfreechart(v1.0.9)的库。

当我尝试运行.jar文件时,出现以下错误:

java.util.MissingResourceException: Can't find bundle for base name
        org.jfree.chart.LocalizationBundle, locale en_US
    at java.util.ResourceBundle.throwMissingResourceException
        (ResourceBundle.java:1521)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:962)

我试过创建一个 LocalizationBundle.properties 文件,但没有成功。我已经检查了 CLASSPATH,但还是不行。
有什么想法吗?
5个回答

37
java.util.MissingResourceException: 找不到资源包基名
    org.jfree.chart.LocalizationBundle,语言环境为 en_US

简而言之,异常信息详细说明需要在类路径中有以下文件之一:

/org/jfree/chart/LocalizationBundle.properties

或者

/org/jfree/chart/LocalizationBundle_en.properties

或者

/org/jfree/chart/LocalizationBundle_en_US.properties

另外,请参考Java官方的关于资源包的教程获取更多信息。

但是,由于这实际上是一个第三方管理的属性文件,您不应该自己创建。它应该已经存在于JFreeChart JAR文件中。请确保在运行时将其添加到类路径中。同时,请确保使用正确的版本,因为属性文件在包树中的位置可能随JFreeChart版本而改变。

在执行JAR文件时,可以使用-cp参数指定类路径。例如:

java -jar -cp c:/path/to/jfreechart.jar yourfile.jar

或者您可以在JAR文件的清单文件中将类路径指定为class-path条目。您可以在其中使用相对路径,这些路径相对于JAR文件本身。不要使用%CLASSPATH%环境变量,它会被JAR文件和其他没有使用java.exe without -cp-classpath-jar参数执行的内容所忽略。


值得注意的是,您应该检查一下捆绑包名称是否有错别字。我曾经因为将我的捆绑包从IDE重命名时不小心在前面加了一个空格(我使用的是Linux系统,所以操作系统没有报错),而花费了30分钟来调试我的应用程序。真是自己打自己的脸啊... - csharpfolk

4

如果您使用的是IntelliJ IDE,只需右键单击资源包并选择新建,然后选择Resource Boundle,它将自动为您创建.properties文件。这对我有效。


2

BalusC是正确的。版本1.0.13是当前版本,但1.0.9似乎具有所需的捆绑包:

$ jar tf lib/jfreechart-1.0.9.jar | grep LocalizationBundle.properties 
org/jfree/chart/LocalizationBundle.properties
org/jfree/chart/editor/LocalizationBundle.properties
org/jfree/chart/plot/LocalizationBundle.properties

0
将 .properties 文件放置在与 com 相同级别的 src/ 文件夹下即可解决该问题。

0
Spring Boot工程 - 需要手动添加“org.jfree.chart.LocalizationBundle”目录结构(包括每个目录和子目录)到资源目录中,否则在我的情况下无法正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接