Как загрузить PDF из файла .jar? - PullRequest
       0

Как загрузить PDF из файла .jar?

0 голосов
/ 02 сентября 2011

Я создал приложение Swing и включу файл help.pdf в файл .jar. Когда пользователь выбирает Help->User Guide из JMenuItem, он должен загрузить файл в средство просмотра PDF по умолчанию в системе.

У меня есть код для загрузки PDF,

private void openHelp() {
    try {
        java.net.URL helpFile = getClass().getClassLoader().getResource("help.pdf");
        File pdfFile = new File(helpFile.getPath());
        if (pdfFile.exists()) {

            if (Desktop.isDesktopSupported()) {
                Desktop.getDesktop().open(pdfFile);
            } else {
                System.out.println("Awt Desktop is not supported!");
            }

        } else {
            System.out.println("File does not exist!");
        }

        System.out.println("Done");

    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

Это работает в IDE затмения, однако, когда я упаковываю его в банку для других людей, оно больше не работает.

Как мне решить эту проблему?

Ответы [ 3 ]

1 голос
/ 02 сентября 2011

Проблема в том, что File не может назвать компонент файла JAR. Вам нужно скопировать ресурс из файла JAR во временный файл в файловой системе и открыть его, используя File для временного файла.

0 голосов
/ 02 сентября 2011

Я думаю, вам нужно найти местоположение банки, открыть ее и загрузить файл pdf из вашего приложения.Файл .jar - это просто заархивированный архив, который можно легко прочитать с помощью java ...

0 голосов
/ 02 сентября 2011

Имена файлов в файле .jar чувствительны к регистру. В вашем тексте вы пишете Help.pdf, но в коде вы используете help.pdf. Прописные / строчные буквы в коде Java должны соответствовать регистру файла, даже если вы используете систему, в которой файловая система не чувствительна к регистру.

Попробуйте

getResource("Help.pdf");

вместо этого (при условии, что имя файла в тексте сообщения правильное)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...