2016-03-15 2 views
0

enter image description hereResourceBundle бросает MissingResourceException

Я пытаюсь прочитать файл свойств от местоположения файла. Но ресурс не может найти файл и выбрасывает следующее исключение

Я попытался сохранить файл под classpath, но не смог прочитать файл. Но я намерен прочитать файл свойств из пути к файлу, и это исходит от пользователя. Таким образом, мой класс может считывать входы агностического файла для получения свойств.

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name configFileName, locale en_US 
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499) 
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322) 
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:721) 
    at com.cisco.propertiesreader.FileConfigLoader.getBundle(FileConfigLoader.java:16) 
    at com.cisco.propertiesreader.MainApp.main(MainApp.java:10) 

FileConfigLoader класс:

package com.cesna.propertiesreader; 

import java.util.MissingResourceException; 
import java.util.ResourceBundle; 

import org.apache.log4j.Logger; 

public class FileConfigLoader { 

    private static final Logger LOGGER = Logger.getLogger(FileConfigLoader.class); 

    private static String EMPTY = ""; 

    public static ResourceBundle getBundle(String configLocation) { 

     ResourceBundle rb = ResourceBundle.getBundle("configFileName"); 

     return rb; 

    } 

    public static String getValue(ResourceBundle rb, String key) { 
     String value = EMPTY; 

     try { 
      value = rb.getString(key); 
     } catch (MissingResourceException mREx) { 
      LOGGER.error("Missing Resource : " + key); 
     } 

     return value; 
    } 

} 

MainApp Класс:

package com.cesna.propertiesreader; 

import java.util.ResourceBundle; 

public class MainApp { 

    public static void main(String[] args) { 

     ResourceBundle resource = FileConfigLoader 
       .getBundle("D:\\PDIWorkspace\\PropertyFileReader\\resoures\\config.properties"); 

     String hive_db = FileConfigLoader.getValue(resource,"hive_db"); 

     System.out.println(hive_db); 
    } 

} 

Am, я делаю это правильный путь.

config.properties

hive_db=installbase 
EDGE_HIVE_CONN=dev-node 
target_dir=/app/dev/SmartAnalytics/sqoop_temp/ 
IB_log_table=IB_log 
SR_DG_master_table=data_usage_governance_master 
SR_DG_table=data_usage_governance_log 

Устранена после использования ниже способ чтения файла:

package com.cesna.propertiesreader; 

import java.util.ResourceBundle; 

public class MainApp { 

    public static void main(String[] args) { 

     ResourceBundle resource = FileConfigLoader 
       .getBundle("com.cisco.propertiesreader.config"); 

     String hive_db = FileConfigLoader.getValue(resource,"hive_db"); 

     System.out.println(hive_db); 
    } 

} 

ответ

1

Вы уверены, что следующий предназначен

public static ResourceBundle getBundle(String configLocation) { 

    ResourceBundle rb = ResourceBundle.getBundle("configFileName"); 

    return rb; 

} 

Я думаю, что это должен быть

public static ResourceBundle getBundle(String configLocation) { 

    ResourceBundle rb = ResourceBundle.getBundle(configLocation); 

    return rb; 

} 

Если вы хотите, чтобы загрузить данные из внешнего каталога (не в пути к классам)

public static ResourceBundle getBundle(String basePath, String baseName) throws MalformedURLException { 
    File file = new File(basePath); 
    URL[] urls = {file.toURI().toURL()}; 
    ClassLoader loader = new URLClassLoader(urls); 
    ResourceBundle rb = ResourceBundle.getBundle(baseName, Locale.getDefault(), loader); 
    return rb; 
} 
+0

Я использовал configLocation \t общественный статический ResourceBundle getBundle (Строка configLocation) { \t \t ResourceBundle rb = ResourceBundle.getBundle (configLocation); \t \t return rb; \t} Он по-прежнему выбрасывает исключение – dataEnthusiast

+0

Нет, он все еще не работает. – dataEnthusiast

+0

можете ли вы опубликовать файл свойств? –

0
public static ResourceBundle getBundle(String configLocation) { 
    ResourceBundle rb = ResourceBundle.getBundle("./resources/"+configLocation); 
    return rb; 
}