Eae galera, blz?!
Estou tentando pegar um arquivo de propriedades que se encontra dento do meu jar.
URL url = this.getClass().getResource("/Settings.properties");
file = new File(URLDecoder.decode(url.getFile(),"UTF-8"));
Utilizando o Eclipse ele me retorna o seguinte path:
/local/Workspace/Meu projetol/bin/Settings.properties
Pois quando rodo pelo jar, coloquei um JOptionPane para ver o path q ele estava capturando, percebi que ele capturava o seguinte caminho:
/home/rafael/file:/local/Workspace/Meu projeto/Meu jar.jar!/Settings.properties
será que tem alguma forma de eu capturar esse caminho corretamente mesmo utilizando o jar?
Obs.: Necessito que o .properties fique dentro do jar.
FileInputStream ou FileReader (que é o que provavelmente você está usando com File) não consegue ler um arquivo dentro do JAR.
Você pode usar getResourceAsStream (que retorna uma InputStream) para ler o tal arquivo.
Pelo que eu entendi, você deseja utilizar um arquivo de properties dentro do seu JAR.
Para isso, você pode utilizar a classe Properties, dessa forma aqui:
import java.io.IOException;
import java.util.Properties;
public class LeitorProperties {
public Properties obtemProperties(String nomeProperties){
try {
Properties props = new Properties();
props.load(getClass().getResourceAsStream(nomeProperties));
return props;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
LeitorProperties p = new LeitorProperties();
Properties props = p.obtemProperties("/Settings.properties");
if (props != null){
props.getProperty("propriedade desejada");
//etc...
}
else{
System.out.println("Não foi encontrado o arquivo de propriedades informado!");
}
}
}
Um abraço!