Вы разместили файл chm
внутри вашего каталога исходного кода. Очевидно, что этого каталога нет, когда вы запускаете JAR. Я предполагаю, что вы хотите иметь автономный JAR, который содержит файл справки, входящий в него.
С exec
делегаты на родной платформе интерпретируют командную строку как нечто, с чем можно начинать подпроцесс, вы можете себе представить, что возникнут проблемы с прозрачным доступом к файлу, заложенному в архив JAR.
Таким образом, либо предоставите файл справки отдельно, либо напишите код, который сделает извлечением файла справки из JAR во время выполнения. Затем переместите свое местоположение на hh.exe
.
Позвольте мне также сделать общее утверждение: поскольку вы пишете здесь Java-программу, которая должна быть не зависящей от платформы, ваш подход с файлом справки по Windows не совсем соответствует книге.
Прочитайте (и внесите) * все * рекомендации [Когда Runtime.exec() не будет] (http://www.javaworld.com/jw-12-2000/jw-1229-traps.html) , Это может решить проблему. Если нет, он должен предоставить дополнительную информацию о причине отказа. Затем проигнорируйте, что он ссылается на 'exec' и создает' Process' с помощью 'ProcessBuilder'. Также разбивайте 'String arg' на' String [] args' для учета аргументов, которые сами содержат пробелы. –
Я прочитал и внедрил рекомендации, но не могу найти решение, потому что либо я получаю исключение как «файл не найден», либо «не может открыть файл». – AnkushSeth