Я могу ответить на одну часть вашего вопроса: как вы находите местоположение вашего JAR во время выполнения:
File jarDir = new File(ClassLoader.getSystemClassLoader().getResource(".").getPath());
locationOfJar = jarDir.getAbsolutePath();
Это даст вам путь к папке, в которой Jar в настоящее время находится как строка.