2015-11-05 3 views
1

Я пытаюсь запустить текстовый файл из .jar файла с помощью Desktop.getDesktop(). Разомкнут (файл)Запуск текстового файла из .jar файла (путь к файлу?)

String fileName = "file.txt"; 

URL url = getClass().getResource(fileName); 
File fileToRead = new File(url.toURI()); 
Desktop.getDesktop().open(fileToRead); 

I пропустили блоки try-catch для простоты. Он может открыть мой файл при запуске из eclipse. Но как только я экспортирую в файл .jar, я получаю исключение NullPointerException в Файл fileToRead = новый файл (url.toURI());

+1

Где сохранить файл «file.txt»? –

+0

вы не можете «запустить текстовый файл», это не исполняемый файл. Вы проверяли, сохранился ли файл? добавьте инструкцию печати с помощью URL-адреса, который вы используете, и проверьте свой диск, существует ли файл – Stultuske

+0

Не могли бы вы исправить свой пример? В настоящее время мы не знаем, что такое 'файл' (я подозреваю, что вы хотите' fileName' там) – Pshemo

ответ

0

Когда вы упаковываете класс в файл .jar, он обычно делает его вложенным на один уровень глубже.

Таким образом, вы можете попытаться изменить первую строку:

String filename = "../file.txt"; 
0

Глядя на JavaDoc из Class.getResource(String):

абсолютное имя ресурса строится из данного имени ресурса с использованием этого алгоритма:

Если имя начинается с символа '/', то абсолютное имя ресурса является частью имени, следующего за '/'. В противном случае абсолютное имя имеет следующую форму: modified_package_name/name Где modified_package_name - это название упаковки этого объекта с заменой '/' '.'.

Параметры:

имя - имя требуемого ресурса

Возвращает: объект URL или нуль, если ни один ресурс с таким именем не найден

Ваш ресурс не найден , следовательно, NullPointerException. Укажите путь в JAR, как описано JavaDoc (абсолютный путь, начинающийся с '/' или относительно класса this, объекта, на который вы звоните getClass().getResource(fileName)), и вы должны его получить.