2014-01-24 2 views
0

Привет всем Я пытаюсь запустить help file(.chm) из netbeans каталога с помощью этого кодаКак дать относительный путь к Runtime.exec

Process proc= Runtime.getRuntime().exec("hh.exe src/MOVECG_Pro.chm"); 

, но проблема возникает, когда я пытаюсь запустить вне netbeans, потому что внутри банка src папка не существует. Пожалуйста, помогите мне как правильно его закодировать.

+0

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

+0

Я прочитал и внедрил рекомендации, но не могу найти решение, потому что либо я получаю исключение как «файл не найден», либо «не может открыть файл». – AnkushSeth

ответ

1

Вы разместили файл chm внутри вашего каталога исходного кода. Очевидно, что этого каталога нет, когда вы запускаете JAR. Я предполагаю, что вы хотите иметь автономный JAR, который содержит файл справки, входящий в него.

С exec делегаты на родной платформе интерпретируют командную строку как нечто, с чем можно начинать подпроцесс, вы можете себе представить, что возникнут проблемы с прозрачным доступом к файлу, заложенному в архив JAR.

Таким образом, либо предоставите файл справки отдельно, либо напишите код, который сделает извлечением файла справки из JAR во время выполнения. Затем переместите свое местоположение на hh.exe.

Позвольте мне также сделать общее утверждение: поскольку вы пишете здесь Java-программу, которая должна быть не зависящей от платформы, ваш подход с файлом справки по Windows не совсем соответствует книге.

+0

Большое спасибо @ Марко. Я реализовал свой путь! – AnkushSeth

 Смежные вопросы

  • Нет связанных вопросов^_^