Accediendo a un archivo dentro de un archivo .jar

Posible duplicado:
¿Cómo leo un archivo de recursos de un archivo jar de Java?

Empezando a estar completamente loco por esto después de googlear durante horas. También he visto variaciones de la pregunta en el sitio, pero parece que no funciona. Un JFrame necesita leer datos de un archivo ini y he creado un método para abrir dicho archivo. Dicho archivo se almacena en una carpeta llamada recursos dentro de un archivo 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; } 

Por supuesto, esto funciona perfectamente cuando estoy ejecutando el código después de la comstackción, pero arroja una excepción después de ser exportado a un archivo .jar. He investigado el uso de InputStream, FileInputStream pero parece que no puedo encontrar una solución que funcione.

¿Cómo puedo hacer que el archivo jar reconozca el recurso?

Cuando su recurso está en el archivo JAR, ya no es un archivo. Un archivo es solo un archivo físico en el sistema de archivos. Solución: use getResourceAsStream . Algo como esto:

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

Estás leyendo el archivo mal. Si el archivo está ubicado en un JAR, no puede usar la clase File . En su lugar, debe obtener un InputStream en el archivo utilizando getResourceAsStream() :

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