java.io.IOException: Corriente cerrado el acceso a los archivos de configuración de carpetas fuera del tarro

Kurama:

Estoy ejecutando un archivo jar que dice configuraciones de un archivo de configuración fuera de / home / usuario / xxx / Testfolder / jarfile , la ruta del archivo de configuración es /opt/xxx/conf/global_config.cfg.

Sin embargo, soy capaz de acceder a los archivos dentro de la jarra, así que supongo que el error se debe a que el archivo no ser encontrado.

A continuación se muestra el código:

public Properties createProperties(){
    Properties p = null;
    ClassLoader cl = this.getClass().getClassLoader();
    try (InputStream stream = cl.getResourceAsStream("/opt/xxx/conf/global_config.cfg")) {
        p = new Properties();
        BufferedInputStream bis = new BufferedInputStream(stream);
        p.load(bis); // this is throwing the error
        System.out.println(p.toString());
    } catch (IOException e) {
        e.printStackTrace();
    }

    return p;
}

¿Cuál es la forma correcta de conseguir un archivo independientemente de su ruta en un sistema Linux?

Kris:
cl.getResourceAsStream("/opt/xxx/conf/global_config.cfg") 

espera que el recurso esté disponible en relación con la ubicación de clase. Así, se buscará como una ruta relativa a la clase dentro de la jarra. Pero el camino /opt/xxx/conf/global_config.cfges una ruta de disco absoluta, y para leerlo, es necesario utilizar elFileInputStream

public Properties createProperties(){
    Properties p = null;
    ClassLoader cl = this.getClass().getClassLoader();
    try (InputStream stream =new FileInputStream("/opt/xxx/conf/global_config.cfg")) {
        p = new Properties();
        p.load(stream);
        System.out.println(p.toString());
    } catch (IOException e) {
        e.printStackTrace();
    }

    return p;
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=300416&siteId=1
Recomendado
Clasificación