powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Странное поведение NetBeans 7.1.2
2 сообщений из 2, страница 1 из 1
Странное поведение NetBeans 7.1.2
    #37880732
eml78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При запуске внешнего приложения через Runtime.getRuntime().exec Netbeans временами подвисает (хотя процесс завершается).
Например при запуске
Executer.execStd("C:/Oracle/glassfish-3.1.1/glassfish3/glassfish/bin/asadmin.bat", " stop -domain", "domain1");
все проходит нормально - стандартный батник glassfish запускается, останавливает домен, после чего завершается моя программа и NetBeans завершает отладку(запуск).

А вот при запуске
Executer.execStd("C:/Oracle/glassfish-3.1.1/glassfish3/glassfish/bin/asadmin.bat", " start -domain", "domain1");
стандартный батник glassfish запускается, запускает домен, после чего завершается моя программа, но NetBeans продолжает чего-то ждать (как при отладке, так и при запуске).

При запуске jar-файла вне IDE программа завершается.

Подозреваю, что проблема заключается в том, что при запуске glassfish домена создается новый java-процесс (сервер) - возможно NetBeans ждет его завершения?
Если да, то можно ли NetBeans как-то объяснить что ждать не нужно?

Код класса Executer на всякий случай прикладываю
Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Executer {

    public static int execNull(String... cmd) throws IOException, InterruptedException {
        return exec(Runtime.getRuntime().exec(cmd),
                new NullStreamer(), new NullStreamer());
    }

    public static int execStd(String... cmd) throws IOException, InterruptedException {
        return exec(Runtime.getRuntime().exec(cmd),
                PrintStreamer.stdOutStreamer(), PrintStreamer.stdErrStreamer());
    }

    public static int exec(Process proc, ExecRunable stdout, ExecRunable stderr) throws InterruptedException {
        stdout.setStream(proc.getInputStream());
        stderr.setStream(proc.getErrorStream());
        Thread stdoutThread = new Thread(stdout);
        Thread stderrThread = new Thread(stderr);
        stdoutThread.start();
        stderrThread.start();
        return proc.waitFor();
    }

    public static interface ExecRunable extends Runnable {

        public void setStream(InputStream stream);
    }

    public static abstract class Streamer implements ExecRunable {

        protected InputStream input;

        @Override
        public void setStream(InputStream stream) {
            this.input = stream;
        }
    }

    public static class NullStreamer extends Streamer {

        @Override
        public void run() {
            try {
                int count;
                while ((count = input.available()) > 0) {
                    input.skip(count);
                }
            } catch (IOException ex) {
                Logger.getLogger(Executer.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public static class PrintStreamer extends Streamer {

        private PrintStream outStream;
        private String name;

        public PrintStreamer(PrintStream outStream, String name) {
            this.outStream = outStream;
            this.name = name;
        }

        public String getName() {
            return name;
        }                

        public static PrintStreamer stdOutStreamer() {
            return new PrintStreamer(System.out, "stdout");
        }

        public static PrintStreamer stdErrStreamer() {
            return new PrintStreamer(System.err, "stderr");
        }

        @Override
        public void run() {
            try {
                InputStreamReader reader = new InputStreamReader(input);
                char[] buffer = new char[256];
                int count;
                while ((count = reader.read(buffer)) > 0) {
                    outStream.print(new String(buffer, 0, count));
                }
            } catch (IOException ex) {
                Logger.getLogger(Executer.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}

...
Рейтинг: 0 / 0
Странное поведение NetBeans 7.1.2
    #37880969
eml78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Netbeans 6.9.1 и Eclipse 3.7 SR2 такая же картина
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Странное поведение NetBeans 7.1.2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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