powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Проблема с запуском процесса из-под JAR-файла в Exceed
4 сообщений из 4, страница 1 из 1
Проблема с запуском процесса из-под JAR-файла в Exceed
    #37759164
erslgoeirjh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть программа 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:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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).
...
Рейтинг: 0 / 0
Проблема с запуском процесса из-под JAR-файла в Exceed
    #37759427
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Походу beg_matr запускается на соседнем процессоре (ядре), отрабатывает дольше чем 500 мс, но оригинальная программа не ждёт завершения и сразу пытается читать результат её работы. На windows либо 1 процессор, либо она просто быстро пускает жабу.
...
Рейтинг: 0 / 0
Проблема с запуском процесса из-под JAR-файла в Exceed
    #37762306
erslgoeirjh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я написал следующий код:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
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 всё равно зависает.

В чём причина этого? Может быть, что-то надо исправить в моём коде?
...
Рейтинг: 0 / 0
Проблема с запуском процесса из-под JAR-файла в Exceed
    #37762622
erslgoeirjh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я также попробывал по-другому: в моей Java-программе CallTEMP на том месте, где должна вызываться программа beg_matr, я поставил выход из программы
Код: java
1.
CallTEMP через jFrame.setVisible(false);

. При этом я поставил у jFrame (главного окна программы CallTEMP) свойство DISPOSE_ON_CLOSE . (Весь оставшийся код после этого я закомментировал).

Я изменил файл запуска run.bat :

Код: java
1.
2.
3.
4.
cd /home/KOL/ryk/CallTEMP

java -jar CallTEMP.jar
beg_matr



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

На всякий случай для проверки я поменял в файле run.bat вызовы прогармм CallTEMP.jar и beg_matr местами:

авторcd /home/KOL/ryk/CallTEMP

beg_matr
java -jar CallTEMP.jar

и получилось, что beg_matr ормально запускается, отрабатывает свои действия, завершает свою работу, а после этого запускается CallTEMP.jar .

Но почему же тогда не вызывается программа beg_matr при прямом порядке действий--когда сначала должна отработать CallTEMP.jar, а потом beg_matr? Может быть, этот как-то связано с JVM на этом Unix-сервере? Может быть, следует в файле run.bat после команды авторjava -jar CallTEMP.jar ввести какую-то системную команду Unix или команду java с определённой опцией, а после этого ввести авторbeg_matr ?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Проблема с запуском процесса из-под JAR-файла в Exceed
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]