2012-06-26 3 views
1

Уважаемой Sir/Madam,Run Фортрана еха в Java

У меня есть FORtran ех, который принимает входной файл и производит выходной файл, выполнив некоторые манипуляции на входе file.i я в состоянии выполнить команду в терминале Linux. (Я думаю, что fortran-компилятор доступен в linux). Теперь предложите, как запустить этот исполняемый файл fortran с помощью java (на машине Linux).

Что я пытался есть

String cmd="fortranExe arg1 arg2"; 
//fortranExe=exe path 
//arg1,arg2 are arguments to fortran executable program 
Process p=Runtime.getRuntime().exec(cmd); 

Но я не получаю output.When я попытался запустить команды Linux, такие как Ls, реж даем output.Is ничего, необходимые для запуска FORtran кода в Java?

ответ

0

Попробуйте использовать что-то вроде этого

Process process = new ProcessBuilder("C:\\PathToExe\\fortran.exe","param1","param2").start(); 

получил от этого

Java Programming: call an exe from Java and passing parameters

Больше информации о ProcessBuilder: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html

+0

Я пробовал выше одного, но он не выполняет команду. –

+0

@SureshKumar Пожалуйста, укажите точный код, который вы пытаетесь. – Austin

+0

На самом деле я хочу запустить fortran 6s (я скачал с ftp://kratmos.gsfc.nasa.gov/pub/eric/6S/)and и смог запустить код в linux manchine. Фактически команда: sixsV1.1 OutputFileName.txt. –

1

Нет, если это reqular двоичная для платформы вы работая на JVM, это не имеет значения.

Как вы управляете двоичным кодом при запуске с консоли?

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

BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); 

String line; 
while ((line = br.readLine()) != null) 
{ 
    System.out.println(line); 
} 
br.close(); 

Если есть какие-либо проблемы во время выполнения выполнения процесса, например, нет разрешения на запуск двоичного файла и т. д., process.exitValue() вернет 127.

EDIT: видя другие комментарии, я вижу, что вы используете перенаправление в/вывод в свой двоичный файл.

Так что на самом деле параметров нет, но вам нужно открыть InputFileName.txt и использовать объект process.getOutputStream() для записи в ваш процесс. Не нужно устанавливать OutputFilename.txt, потому что вы читаете вывод из InputStream и при необходимости можете записать его непосредственно в файл.

Этот ответ объясняет это в деталях:

https://stackoverflow.com/a/3644288/435583

https://stackoverflow.com/a/6796053/435583

Cheers,

+0

Я дал 777 разрешений для папки. –

+0

Это двоичный файл –

+0

Что такое вывод при запуске «файла fortranExe» из оболочки? – Naytzyrhc

0

Помимо использования среды выполнения более уборщик путь будет использовать JNA. См. Конкретный пример для Fortran here.

Вы можете даже называть отдельные части, такие как подпрограммы вашей программы Fortan непосредственно с Java. JNA обычно используется для вызова программ C/C++ и, как правило, подходит для подобных случаев, и я думаю, что ваш вариант использования подходит именно здесь.

+0

Код fortran свободно доступен и более над его проверено правильно. Так что я хочу использовать этот fortran-код, не меняя его на java. –

+0

Thats file. Нужен ли этот подход для изменения кода Fortran? – Santosh

+0

no sir, На самом деле я скомпилировал код и смог получить двоичный файл, который может быть выполнен в терминале linux. –

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