Acessando um arquivo dentro de um arquivo .jar

Duplicar Possível:
Como faço para ler um arquivo de resources de um arquivo jar do Java?

Começando a ficar completamente maluco por isso depois de pesquisar por horas. Eu também vi variações da questão no site, mas não consigo fazê-lo funcionar. Um JFrame precisa ler dados de um arquivo ini e eu criei um método para abrir o arquivo. Esse arquivo é armazenado em uma pasta chamada resources dentro de um arquivo jar.

private BufferedReader openIniFile(String filename){ BufferedReader brReader = null; try{ File fileObj = new File(this.getClass().getResource("/resources/" + filename).toURI()); // The fileobject of the file to read if(fileObj.exists()) brReader = new BufferedReader(new FileReader(fileObj)); } catch(Exception e){ System.err.println("Exception while opening file: " + e.getMessage()); } return null; } 

Isso obviamente funciona perfeitamente quando estou executando o código após a compilation, mas gera uma exceção após ser exportado para um arquivo .jar. Eu olhei em usando InputStream, FileInputStream, mas não consigo encontrar uma solução que funcione.

Como posso fazer o arquivo jar reconhecer o recurso?

Quando seu recurso está no arquivo JAR, não é mais um arquivo. Um arquivo é apenas um arquivo físico no sistema de arquivos. Solução: use getResourceAsStream . Algo assim:

 new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/resources/" + filename))) 

Você está lendo o arquivo errado. Se o arquivo estiver localizado em um JAR, você não poderá usar a class File . Em vez disso, você deve obter um InputStream para o arquivo usando getResourceAsStream() :

 InputStream in = this.getClass().getResourceAsStream("/resources/" + filename);