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?
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.cfg
es 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;
}