ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("com/x/y/z.cfg");
File file = new File(url.getPath());
Это работает при запуске файла jar из Eclipse, но не работает при запуске в файле jar.classLoader.getResource не работает в jar-файле
java.io.FileNotFoundException: Файл: \ C: \ Users \ \ нова Desktop \ Matcher.jar \ с ом \ х \ у \ z.cfg
Это не дубликат. Я проверил все остальные вопросы, никакой полезной информации.
Что вы хотите сделать с этим файлом, как только вы его получите? Вы не можете создать «Файл» из «URL», который вы получаете для ресурса в JAR (потому что это не URL-адрес «file:», обычно это «jar: file: /path/to/file.jar!/com/x/y/z.cfg'), но если API, который вы используете, может принимать 'URL' или' InputStream' вместо 'File', тогда вам не нужно. –
Это объясняется много раз: [здесь] (http://stackoverflow.com/questions/944610/how-do-i-access-a-config-file-inside-the-jar), [здесь] (http: //stackoverflow.com/questions/20389255/java-reading-a-resource-file-from-within-jar), [здесь] (http://stackoverflow.com/questions/403256/how-do-i-read -a-ресурс-файлы из-а-Java-Jar-файл? RQ = 1). Резонанс действительно потому, что File представляет объект файловой системы, а содержимое jar недоступно в файловой системе (но Java может каким-то образом обрабатывать его - как InputStream). –
URL.getFile() * не конвертирует URL в допустимый путь к файлу. Он просто возвращает часть пути URL. (В дни Java 1.0 большинство URL-адресов ссылались на физические файлы, поэтому метод называется getFile.) – VGR