2016-10-27 5 views
1

У меня есть код C, который я скомпилирован и добавлен в путь для того, чтобы быть в состоянии выполнить его форму в любом месте (я проверил, что я могу сделать)Выполнить команду оболочки из Java в определенной папке

Теперь я хочу сделать графический интерфейс, чтобы работать с ним более простым способом. Я прошу пользователя ввести файл и выходной каталог.

В кнопке мыши я поставил код, чтобы выполнить команду из графического интерфейса:

String command = "myprogram -e " + file; 
new ExecuteShellInstruction().main(command,jTextOutputDirectory.getText()); 

я выполнить код в другом классе:

p = Runtime.getRuntime().exec(command, null, new File(directory)); 

Но я всегда получаю эту ошибку:

java.io.IOException: Cannot run program "myprogram" (in directory "/Users/user_name/Documents/folder/example"): error=2, No such file or directory 

Я проверил, что если я точно буду писать то же самое из той же папки, проблем нет.

Любая идея о том, что я делаю worng ?, Если получен этот способ сделать это из вопроса, который был отмечен как правильный, может быть, я что-то упустил, но я уже пробовал что-то 1 час и ничего похоже работа.

Спасибо!

+0

его с четким указанием его не в состоянии найти файл в рабочем каталоге –

+0

@ShreyasSarvothama да, он говорит так. Но, как я уже упоминал, когда я делаю это непосредственно в этом каталоге из оболочки, он отлично работает. – nck

+0

, но где вы работаете со своим кодом java .. сначала установите каталог, а затем запустите его .. shell default directory отличается и java рабочий каталог отличается –

ответ

1

Наконец-то я нашел решение. Похоже, вы должны сказать, что ваше приложение может быть выполнено путем добавления «./» в начале. Что-то вроде этого:

String command = "./myprogram -e " + file; 
+0

Используйте перегрузку, которая принимает 'String []', иначе вы не сможете обрабатывать имена файлов с пробелами. –

+0

Спасибо, не могли бы вы указать, где именно? Команда String []? – nck

+0

@nck: см. ['Runtime'] (https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html); также рассмотрим «ProcessBuilder», показанный здесь [http://stackoverflow.com/a/20603012/230513]. – trashgod