Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中从属性文件动态加载_Java_Apache Commons Config - Fatal编程技术网

在java中从属性文件动态加载

在java中从属性文件动态加载,java,apache-commons-config,Java,Apache Commons Config,我有一个config.properties文件,名称如下: 姓名=约翰、简 然后我有一个类访问该文件并加载名称。我还有另一个类,它从某处获取一个名称,如果该名称在config.properties中,则会打印“SUCCESS”。问题是,如果我向config.properties添加名称,我必须再次运行该程序,它不会动态加载。有什么替代方案 public class PropertiesFile { private static final char OPENFILES_CONFIG_

我有一个config.properties文件,名称如下: 姓名=约翰、简

然后我有一个类访问该文件并加载名称。我还有另一个类,它从某处获取一个名称,如果该名称在config.properties中,则会打印“SUCCESS”。问题是,如果我向config.properties添加名称,我必须再次运行该程序,它不会动态加载。有什么替代方案

 public class PropertiesFile {

    private static final char OPENFILES_CONFIG_DELIMITER = ',';
    private static final String OPENFILES_CONFIG = "config.properties";

    private static org.apache.commons.configuration2.Configuration config;

    static {
        try {
            Parameters params = new Parameters();
            FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
                .configure(params.properties()
                    .setFileName(OPENFILES_CONFIG)
                    .setListDelimiterHandler(new DefaultListDelimiterHandler(OPENFILES_CONFIG_DELIMITER)));

            config = builder.getConfiguration();    } 
        catch (ConfigurationException cE) {
            //...
        }
    }

    public static Set<String> load() {
        String[] thingsToExecute = config.getStringArray("names");
        return new HashSet<String>(Arrays.asList(thingsToExecute));
    }

}



public class OpenFiles {

    private static Set<String> toExecute;

    public static void main(String[] args) {
        updateToExecute();
        connect();
    }


    private static void connect() {

            //code that obatins JSONObject

            if (obj4.has("name")) {
                String personName = obj4.get("name").toString();
                updateToExecute();
                if (toExecute.contains(personName))   {                                              
                    System.out.println("SUCCESS");
                } else {
                    System.out.println(personName+"is not in the list");
                } 
            }
    }


    private static void updateToExecute() {
        toExecute = PropertiesFile.load();

    }   
}
公共类属性文件{
私有静态最终字符OPENFILES_CONFIG_DELIMITER=',';
私有静态最终字符串OPENFILES\u CONFIG=“CONFIG.properties”;
私有静态org.apache.commons.configuration2.Configuration配置;
静止的{
试一试{
Parameters params=新参数();
FileBasedConfiguration builder=新的FileBasedConfiguration builder(PropertiesConfiguration.class)
.configure(params.properties()
.setFileName(OPENFILES\u CONFIG)
.setListDelimiterHandler(新的DefaultListDelimiterHandler(OPENFILES\u CONFIG\u DELIMITER));
config=builder.getConfiguration();}
捕获(配置异常){
//...
}
}
公共静态设置负载(){
字符串[]thingsToExecute=config.getStringArray(“名称”);
返回新的HashSet(Arrays.asList(thingsToExecute));
}
}
公开类开放文件{
私有静态设置为执行;
公共静态void main(字符串[]args){
updateToExecute();
connect();
}
私有静态void connect(){
//obatins JSONObject的代码
如果(obj4.has(“名称”)){
字符串personName=obj4.get(“name”).toString();
updateToExecute();
如果(toExecute.contains(personName)){
System.out.println(“成功”);
}否则{
System.out.println(personName+“不在列表中”);
} 
}
}
私有静态void updateToExecute(){
toExecute=PropertiesFile.load();
}   
}

您是否在此处查看了有关重新加载文件配置的文档:是的,但仍然无效。然后粘贴使用文件重新加载的正确代码,向我们展示您的尝试