2011-10-31 44 views
1
public static void loadFilters() throws MalformedURLException { 
     File filtersFile = new File(CONFIG_DIR + "/" + FILTERS_FILE); 
     URL[] urls = {filtersFile.toURI().toURL()}; 
     ClassLoader loader = new URLClassLoader(urls); 
     ResourceBundle bundle = ResourceBundle.getBundle(FILTERS_BASE, Locale.getDefault(), loader); 
     if (StringUtils.isNotBlank(getStringValue(bundle, ALLOW_TYPE_PATTERN_KEY))) { 
      ALLOWED_TYPES = Pattern.compile(getStringValue(bundle, ALLOW_TYPE_PATTERN_KEY)); 
     } 
     if (StringUtils.isNotBlank(getStringValue(bundle, DENY_TYPE_PATTERN_KEY))) { 
      DENIED_TYPES = Pattern.compile(getStringValue(bundle, DENY_TYPE_PATTERN_KEY)); 
     } 
     ALLOWED_MIME_TYPES = getListValue(bundle, ALLOW_MIME_PATTERN_KEY); 
     DENIED_MIME_TYPES = getListValue(bundle, DENY_MIME_PATTERN_KEY); 
    } 

我想加載屬性文件,使用保存在單獨目錄中的代碼之外的資源包。但是,當我嘗試做這樣(上面的代碼)我得到錯誤的無法使用ResourceBundle從文件系統加載文件

ERROR [main] Can't find bundle for base name filters, locale en_US 

而且如果我保持這個文件filters.properties中的src/main /資源文件夾,然後這個代碼是工作的罰款...但是當我將它保留在外面時,它不起作用..不知道爲什麼..不知道爲什麼..

而CONFIG_DIR包含\ my \ dir \ conf並且FILTERS_FILE包含filters.properties文件。

FILTERS_FILE具有價值filters.properties和FILTERS_BASE具有價值filters和網址獲得了價值[file:/C:/my/dir/conf/filters.properties]

而且filters.properties文件是/my/dir/conf/filters.properties

+0

「FILTERS_FILE」和「FILTERS_BASE」的值是什麼?前者是指向一個目錄還是一個文件? 'URLClassLoader'假設URL指向一個目錄,如果以'/'結尾,否則它假定你指向一個jar文件。 –

+0

@G_H,我已經更新了問題..和FILTERS_FILE具有值filters.properties和FILTERS_BASE具有值過濾器和URL獲得值爲[文件:/ C:/my/dir/conf/filters.properties] – ferhan

回答

2

嘗試具有文件點到目錄而不是實際的屬性文件。因此,只要改變方法的第一個語句

File filtersFile = new File(CONFIG_DIR + "/"); 

如果FILTERS_BASE包含filters,這應該是足夠的。由於.properties前綴附加在getBundle方法中,因此不需要完整的filters.properties名稱。

+0

感謝它的工作.. !! :) – ferhan

相關問題