Código:
//Obtener dirección absoluta del fichero de ejecución .class o .jar
private static String direcAbs() throws Exception{
/*La dirección recuperada tiene la forma
*? equivale a / o \ segun el S.O.
*Desde un jar=> java:file:?<direccion absoluta jar>!<relativa del resource elegido dentro del jar>
*Desde class=>file:?<direccion absoluta resource> */
String res = "nombreClaseDentroDelJar.class";
String direcc = Principal.class.getResource(res).toString();
//Separador de directorios del sistema
String sep = File.separator;
if (direcc.startsWith("jar:"))
direcc = direcc.substring(4,direcc.length() - ("!" + File.separator + res).length());
File fich = new File (new URL(direcc).toURI());
//Recorres la estructura hasta que estés en el directorio que quieras
//Esta parte la modificas según tus necesidades
do {
fich = fich.getParentFile();
}while (fich.toString().endsWith("bin"));
return fich.toString()+ sep;
}
Éste lo utilicé para leer un txt que estaba en el mismo directorio del jar.
Suerte