La solución que yo usé fue esta:
public static void main(String[] args) {
String recurso = LecturaTxt.class.getSimpleName()+ ".class";
recurso = LecturaTxt.class.getResource(recurso).toString();
StringTokenizer token = new StringTokenizer(recurso,"!");
recurso = token.nextToken();
if(System.getProperty("os.name").toLowerCase().contains("windows"))
recurso = recurso.substring(10);
else
recurso = recurso.substring(9);
File x = new File(recurso);
x.getParent();
System.out.println(x.getParent());
}
En el IDE no te funcionará bien, pero cuando lo pases al jar verás como te devuelve la ruta absoluta del directorio donde se aloja el jar, independientemente del sistema operativo en el que estés