как открыть файл справки в исполняемом банке

Я хочу открыть файл справки .chm при нажатии кнопки «Справка». Когда я делаю это в eclipse, он работает хорошо. но когда я создаю исполняемый файл jar, выдается ошибка «не удается открыть файл». это мой код:

String path = Toolkit.getDefaultToolkit().getClass().getResource("/resources/UserAccountHelpNew.chm").getPath();

    String path1 = path.substring(1);
    System.out.println(path1);

    try {
        Process process = Runtime.getRuntime().exec("hh.exe "+path1);
        process.waitFor();
    } catch (InterruptedException e) {

        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    }

person Vinay    schedule 22.03.2012    source источник


Ответы (1)


hh.exe не может открывать файлы в банке. Вам нужно либо написать код, скопировав содержимое Toolkit.getDefaultToolkit().getClass().getResource("/resources/UserAcountHelpNew.chm") в место в файловой системе, либо распространить этот файл вместе с исполняемым jar.

Причина, по которой это работает в Eclipse, заключается в том, что у вас, вероятно, есть файл в файловой системе. Когда ваш рабочий каталог изменяется, hh.exe больше не может найти файл.

person Jack Edmonds    schedule 22.03.2012
comment
@Vinay Проверьте вывод Toolkit.getDefaultToolkit().getClass().getResource("/resources/UserAccountHelpNew.chm").getPath() (например, выполните System.out.println(Toolkit.getDefaultToolkit().getClass().getResource("/resources/UserAccountHelpNew.chm").getPath())). Обратите внимание, что полученный путь не указывает на файл на жестком диске. - person Jack Edmonds; 22.03.2012
comment
Да, я получил его. но тогда что мне делать? как я могу открыть его? - person Vinay; 22.03.2012
comment
@Vinay Вместо того, чтобы включать UserAccountHelpNew.chm в банку и выполнять getResource, вы должны поместить UserAccountHelpNew.chm вне банки, но в тот же каталог. Тогда вы можете просто сделать Runtime.getRuntime().exec("hh.exe UserAccountHelpNew.chm").waitFor(); - person Jack Edmonds; 22.03.2012