Если файл находится в том же каталоге, что и jar, я думаю, что это будет работать (выглядит довольно странно, но ...):
URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File myfile = new File(url.toURI());
File dir = myfile.getParentFile(); // strip off .jar file
(не проверял это, но, похоже,выполнимо. Разумеется, будет работать только с jar-файлами на основе файлов.
Если файл находится в каком-либо случайном месте, я думаю, вам нужно будет либо передать параметры, либо проверить «известные» места, такие как user.home
.(Или вы всегда можете положить файл в банку, используя getResource()
.)