2012-07-26 53 views
3

關於resourcebundle錯誤,我已閱讀關於同一主題的其他問題,但我沒有得到任何明智的。嘗試了不同的事情,並沒有幫助。爲了給出一點背景:我開發了一個小應用程序(JDK6),它自動執行一些平面文件解析和編輯。該應用程序從閱讀屬性文件中的一些數據開始。找不到ResourceBundle文件,屬性文件不在jar

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

然而,即使有小示例應用程序,我試圖創建的基礎上,另一個問題/回答[這裏] [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 

但是當我運行它,它給了我這樣的輸出:

[email protected]:~/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 

我不能看到我錯了:/

回答

4

-jar表示:組成g類路徑iven jar以及它在清單中引用的所有內容。所以-cp選項被忽略。

您的命令行應該是:

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

也就是說,資源包用來裝載的國際化標籤。如果你只是想讀取屬性,你可以使用java.util.Properties類。

+0

'java -cp /home/dakoina/Documents/ResTestapp:/home/dakoina/Documents/ResTestapp/ResTestApp.jar ResTestApp.class'似乎不起作用。找不到主要類... – Jeankes 2012-07-26 11:15:30

+0

您的課程名爲'restestapp.ResourceBundleTester'。不是'ResTestApp'。 – 2012-07-26 11:37:34

+0

哦,我很抱歉,實際上我複製了原來的代碼,並忘記更改我的新班級名稱(_ResTestApp_) – Jeankes 2012-07-26 11:47:42

2

myresource.propertiesneeds to be in classpath for jar file

把這個屬性文件到罐子,配置類路徑(如鏈接中所述)

+0

java -classpath c:/ temp/-jar ResTestApp.jar 這樣子?如果是這樣,那是行不通的:/ – Jeankes 2012-07-26 10:53:18

+0

請看@JB所描述的命令,或者將它包含在你的jar文件中並設置類路徑 – 2012-07-26 10:53:49

+0

對不起,但是我不能把屬性文件放在jar中 – Jeankes 2012-07-26 11:55:35