2012-07-19 48 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