powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Runtime.getRuntime().exec не отвечает
5 сообщений из 5, страница 1 из 1
Runtime.getRuntime().exec не отвечает
    #37760571
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с такой ситуацией:
Есть MainClass1
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;

public class MainClass1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            dbf.setIgnoringElementContentWhitespace(true);
            dbf.setCoalescing(true);
            dbf.setNamespaceAware(true);
            DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
            Document doc = documentBuilder.parse("temp.xml");
        }
        catch(Exception e){
            
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}



теперь я хочу его запустить как отдельное приложение из другого класса
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class RunClass1 {
    public static void main(String[] args) throws Exception{
        int rc = -1;
        Runtime rt = Runtime.getRuntime();
        Process p = rt.exec("java -cp \"./bin\" MainClass1");
        rc = p.waitFor();
        System.out.println(rc);
        System.out.println("ok");
    }
}



Всё хорошо если temp.xml существует, если его нет то всё просто виснет. И виной этому видимо e.printStackTrace();. Если его убрать то подвисание не происходит.
Как избежать такого, так как мне необходимо осуществлять вывод стэка в поток System.err.
Спасибо.

java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)
Windows 7 64-bit
...
Рейтинг: 0 / 0
Runtime.getRuntime().exec не отвечает
    #37760597
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиском бы что ли воспользовались. Каждый месяц этот вопрос спрашивают
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
Нужно вычитывать выхлоп процесса. Процесс пытается вывести текст. Но так как вы его не читаете, он блокируется.
Варианта 3
1) Использовать start cmd, чтобы отвязать процессы друг от друга. Только тогда waitFor() не будет работать. Так как процесс посредник сразу заканчивается.
2) Писать потоки и вычитывать out и err нового процесса. Смотреть статью выше.
3) В Java 7 есть redirect методы, можно просто вывод перенаправить в текущую консоль без особого головняка
...
Рейтинг: 0 / 0
Runtime.getRuntime().exec не отвечает
    #37760623
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Честно гуглил со вчерашнего обеда.
Спасибо большое за ответ.
...
Рейтинг: 0 / 0
Runtime.getRuntime().exec не отвечает
    #37760636
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Runtime.getRuntime().exec не отвечает
    #37760656
Alexey123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Ну вот не знаю как сумел не наткнуться на ответ. Потоки выходные читал, но по очереди, поэтому и зависало.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Runtime.getRuntime().exec не отвечает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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