无法在Jar之外找到资源

时间:2012-07-19 07:08:42

标签: java resourcebundle

我有一个java程序,如下所示:

package com.abc.myproject;

import java.util.*;

class test {
    public static void main(String[] args) 
    {
        ResourceBundle rb = ResourceBundle.getBundle("mybundle");
        String propertyValue = rb.getString("name");
        System.out.println("propertyValue="+propertyValue);
    }
}

我的这个程序位于C:\ testing \ code \ src \ com \ abc \ myproject \ test.java下 而且,我将mybundle.properties保存在C:\ testing \ code文件夹下。

mybundle.properties包含一行:

name=Mike

当我从命令提示符运行程序时,如下所示,它运行得很好:

C:\testing\code\src>java -cp .;c:\testing\code com.abc.myproject.test
propertyValue=Mike

现在,我创建了Jar文件xyz.jar,其中只包含test.class&把这个Jar保存在C:\ testing目录& jar的清单包含如下:

Manifest-Version: 1.0
Created-By: 1.7.0_05 (Oracle Corporation)
Main-Class: com.abc.myproject.test

在同一目录C:\ testing中,我保留了mybundle.properties&然后尝试使用以下命令运行jar:

java -cp .;c:\testing -jar xyz.jar

但它无法加载mybundle资源&抛出错误:

Exception in thread "main" java.util.MissingResourceException: Can't find bundle
 for base name scheduler, 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 com.abc.myproject.test.main(test.java:8)

我必须将mybundle.properties保留在Jar的一边,因为我们应该能够在此文件中进行更改而无需重新部署Jar。

任何人都可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

  

java -cp .; c:\ testing -jar xyz.jar

使用-jar时无法添加到类路径中。 $ CLASSPATH和-cp被忽略,它只会使用jar清单中的类路径。

你可以做的就是这样运行你的课程:

  

java -cp .; c:\ testing; xyz.jar com.abc.myproject.test