Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с запуском процесса из-под JAR-файла 
:(
    Опции темы
erslgoeirjh
Дата 18.4.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.12.2005

Репутация: нет
Всего: нет



Есть программа CallTEMP.jar на Java, которая вызывает другую программу beg_matr в ОС Unix. beg_matr работает в диалоговом текстовом режиме.
При этом программа CallTEMP создана на моём рабочем компьютере под ОС Windwows 7 в среде разработки JBuilder 2007 (в этой же среде разработки и был создан JAR-файл CallTEMP.jar). А программа beg_matr находится на другом компьютере (Unix-сервере), куда я перебросил мой JAR-файл по протоколу FTP.
CallTEMP вызывает программу beg_matr, программа beg_matr создаёт текстовой файл ACCOI, после отработки процесса beg_matr управление опять передаётся программе CallTEMP, которая обрабатывает файл ACCOI.

Вот мой код на Java в файле CallTEMP:

Код

try {
 Thread.sleep(500);
 pr = Runtime.getRuntime.exec("beg_matr");
 Thread.sleep(500);
} catch (Exception ctex) {
 // показ окна exceptionWarning с текстом ошибки exceptionString
 exceptionString = ctex.toString();
 exceptionString = "Ошибка вызова прогарммы beg_matr. " + exceptionString;
 exceptionWarning = new ExceptionWarning(null);
 exceptionWarning.setWarning(exceptionString);
 exceptionWarning.setVisible(true);
 return;
}


На моём рабочем компьютере происходит обращение к этому Unix-серверу через эмулятор Exceed 2008 (13-ая версия Exceed).
В Exceed я запускаю файл run.bat, который запускает файл CallTEMP.jar. При этом появляется сначала пустое окно, затем через несколько секунд появляется окно программы CallTEMP. Когда по нажатию кнопки на окне моей прогарммы должен быть вызов процесса beg_matr, то этого процесса не происходит, а происходит переход на дальнейшие действия программы CallTEMP. В результатае чего на экран выводится не сообщение об ошибке "Ошибка вызова программы beg_matr. <...>" (где <...>--собственно описание этой ошибки), а сообщение об ошибке

Цитата

java.io.FileNotFoundException: ACCOI (No such file or directory (errno:2))


То есть моя программа CallTEMP не производит вызова программы beg_matr, а сразу обращается к файлу ACCOI, который должен бы быть создан программой beg_matr.

А после завершения работы CallTEMP (нажатия на панели окне этой программы кнопки завершения или же через пункт меню в левом верхнем углу) на экране продолжает оставаться первоначальное пустое окно, которое появилось прежде окна моей программы. Это пустое окно я закрываю через меню в его левом верхнем углу.

Как мне сделать так, чтобы программа CallTEMP запускала у меня на Unix-сервере программу beg_matr, когда я работаю с этим Unix-сервером через программу Exceed?

Текст файла run.bat:

Цитата

cd /home/KOL/ryk/CallTEMP

java -jar CallTEMP.jar


(Программа beg_matr вызывается на Unix-сервере, если её запускать самостоятельно, а не из моей программы CallTEMP).  

PM MAIL   Вверх
erslgoeirjh
Дата 20.4.2012, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.12.2005

Репутация: нет
Всего: нет



Я написал следующий код:

Код

try {
    String  line1="", line2="";
    ProcessBuilder  prb = new ProcessBuilder("beg_matr");
    prb.redirectErrorStream();
    pr = prb.start();
    InputStream  stderr = pr.getErrorStream();
    InputStreamReader isr1 = new InputStreamReader(stderr);
    BufferedReader br1 = new BufferedReader(isr1);
    InputStream  stdin = pr.getInputStream();
    InputStreamReader isr2 = new InputStreamReader(stdin);
    BufferedReader br2 = new BufferedReader(isr2);
    int exitval = pr.waitFor();
    br1.close();
    br2.close();
    isr1.close();
    isr2.close();
    stderr.close();
    stdin.close();
} catch (Exception ctex) {
    exceptionString = ctex.toString();
    exceptionString = "Ошибка вызова программы beg_matr. " + exceptionString;
    exceptionWarning = new ExceptionWarning(null);
    exceptionWarning.setWarning(exceptionString);
    exceptionWarning.setVisible(true);
    jTextField.setText("");
    return;                                                        
}
 

В результате чего моя программа CallTEMP всё равно зависает.

В чём причина этого? Может быть, что-то надо исправить в моём коде?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0381 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.