2012-07-19 63 views
1

我有一个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:\测试\代码\ SRC \ COM \ ABC \ MyProject的\测试.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 &保存在C:\ testing目录下的这个Jar & JAR包含的清单如下:

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

在同一个目录C:\测试,我不停地mybundle.properties &然后试图逃跑罐子下面的命令:

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。

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

谢谢!

回答

3

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

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

你可以做的是运行你的类是这样的:

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