找不到ResourceBundle文件,属性文件不在jar中

时间:2012-07-26 10:47:13

标签: java properties resourcebundle

关于资源捆绑错误,我已经阅读了有关同一主题的其他问题,但我没有更明智。尝试过不同的事情,没有帮助。为了给出一点背景:我开发了一个小应用程序(JDK6),它可以自动执行一些平面文件解析和编辑。该应用程序首先从属性文件中读取一些数据。

重要: 我希望能够更改属性文件。我不想把它放在jar文件中。

然而,即使我尝试创建的小示例应用程序,基于另一个问题/答案[here] [1]:

package restestapp;

import java.util.Locale;
import java.util.ResourceBundle;


public class ResourceBundleTester
{
    public static void main(String[] args)
    {
        Locale locale = Locale.getDefault();
        String basename ="myresource";
        ResourceBundle resourceBundle = ResourceBundle.getBundle(basename, locale);
        System.out.println(resourceBundle.getString("STARTING_MYAPP"));
    }
}

这两个文件都在这里:

/home/dakoina/Documents/ResTestapp/ResTestApp.jar
/home/dakoina/Documents/ResTestapp/myresource.properties

甚至

c:/temp/ResTestApp.jar
c:/temp/myresource.properties

但是当我运行它时,它给了我这个输出:

dakoina@ubuntu:~/Documents/ResTestapp$ java -cp /home/dakoina/Documents/ResTestapp/ -jar "ResTestApp.jar"
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name myresource, locale en_US
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1539)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1278)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:805)
    at restestapp.ResTestApp.main(ResTestApp.java:19)

在Windows中,同样......

c:\temp>java -jar ResTestApp.jar
Exception in thread "main" java.util.MissingResourceException: Can't find bundle
 for base name myresource, locale en_US
        at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
        at java.util.ResourceBundle.getBundleImpl(Unknown Source)
        at java.util.ResourceBundle.getBundle(Unknown Source)
        at restestapp.ResTestApp.main(ResTestApp.java:19)
  [1]: http://stackoverflow.com/questions/3742158/using-resourcebundle-with-an-external-file-java

我看不出我错在哪里:/

2 个答案:

答案 0 :(得分:4)

-jar表示:组合来自给定jar的类路径以及它在清单中引用的所有类路径。因此忽略-cp选项。

您的命令行应该是:

java -cp /home/dakoina/Documents/ResTestapp;/home/dakoina/Documents/ResTestapp/ResTestApp.jar the.main.Class

也就是说,资源包用于加载国际化标签。如果你只想阅读属性,你可以使用java.util.Properties类。

答案 1 :(得分:2)

myresource.properties needs to be in classpath for jar file

将此属性文件放入jar并配置类路径(如链接中所述)