Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 49
1

Запуск Java приложения и вывод консоли в форму

26.03.2013, 17:59. Показов 2823. Ответов 9
Метки нет (Все метки)

Ув. пользователи, вообщем дело обстоит так: есть Java приложение (игровой сервер) запуск которого осуществляется с помощью .bat файла вот пример кода батника
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
title Login Server Console
:start
echo Starting Login Server.
echo.
java -Xms8m -Xmx32m -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*;Server.jar loginserver.LoginServer
SET CLASSPATH=%OLDCLASSPATH%
if ERRORLEVEL 1 goto error
goto end
:error
echo.
echo Login Server Terminated Abnormaly, Please Verify Your Files.
echo.
:end
echo.
echo Login Server Terminated.
echo.
я хочу сделать как бы оболочку (программу) для запуска сервера покажите как можно посредством C# запускать сервер с такими же параметрами как и у батника и выводить лог выполнения сервера (консоль) в оболочку програмы в форму.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2013, 17:59
Ответы с готовыми решениями:

Запуск java из консоли
Здравствуйте. Есть класс: public class qqq { public static void main(String args) {...

Запуск приложения из консоли. Отдельным приложением
Проблема такая через winexec или system или shellexecute другое открываемое приложение открывается...

Java приложения без браузеров и консоли?
Около семи лет назад проходил краткий курс Java, немного лекций + лаб работы на которых писалось...

Запуск внешнего приложения в форму
Доброго времени суток! https://www.cyberforum.ru/delphi-beginners/thread274393-page3.html А как...

9
Администратор
Эксперт .NET
9096 / 4371 / 745
Регистрация: 17.04.2012
Сообщений: 9,140
Записей в блоге: 14
26.03.2013, 18:27 2
C#
1
2
3
4
5
6
7
8
9
ProcessStartInfo info = new ProcessStartInfo {
    Arguments = "-Xms8m -Xmx32m -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*;Server.jar loginserver.LoginServer",
    FileName = @"C:\Program Files\Java\jre\java.exe",
    WorkingDirectory = "каталог с сервером";
};
var javaServer = new Process();
javaServer.StartInfo = info;
StreamReader errorStream = javaServer.StandardError;
javaServer.Start();
В потоке errorStream вся инфа об ошибках. Можете использовать также StandartOutput для чтения вывода приложения. Оттуда можете направить информацию в форму.
1
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 49
26.03.2013, 19:42  [ТС] 3
Спасибо большое

Добавлено через 1 час 7 минут
Вот смотрите, мне надо сделать что бы по нажатию кнопки запускался сервер и лог консоли считывался и отображался например в TextBox я сделал так как вы написали но сервер не запустился и програма не сработала
вот скрин с ошибкой
Мне друг посоветовал ещё сделать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Clear();
            string mycommand = textBox1.Text;
            ProcessStartInfo psiOpt = new ProcessStartInfo(@"cmd.exe", @"/C " + mycommand)
            {
                StandardOutputEncoding = Encoding.GetEncoding(866)// устанавливаем кодировку выводимого
            };
            // скрываем окно запущенного процесса
            psiOpt.WindowStyle = ProcessWindowStyle.Hidden;
            psiOpt.RedirectStandardOutput = true;
            psiOpt.UseShellExecute = false;
            psiOpt.CreateNoWindow = true;
            // запускаем процесс
            Process procCommand = Process.Start(psiOpt);
            // получаем ответ запущенного процесса
            StreamReader srIncoming = procCommand.StandardOutput;
            // закрываем процесс
            procCommand.WaitForExit();
            // выводим результат
            richTextBox1.Text = srIncoming.ReadToEnd();
        }
    }
но у меня никак не получается запустить ProcessStartInfo(@"cmd.exe", @"/C " JAVA -Xms8m -Xmx32m -server -cp ./libs/*;LoginServer.jar loginserver.LoginServer")
0
Миниатюры
Запуск Java приложения и вывод консоли в форму  
Администратор
Эксперт .NET
9096 / 4371 / 745
Регистрация: 17.04.2012
Сообщений: 9,140
Записей в блоге: 14
26.03.2013, 20:11 4
попробуйте добавить
C#
1
psiOpt.RedirectStandardError = true;
0
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 49
26.03.2013, 20:26  [ТС] 5
Процесс запускает но зависает програма( вот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void Запуск_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
            string mycommand = textBox1.Text;
           
             ProcessStartInfo psiOpt = new ProcessStartInfo(@"cmd.exe", @"/C ""JAVA -Xms8m -Xmx32m -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*;Server.jar loginserver.LoginServer")
            {
                StandardOutputEncoding = Encoding.GetEncoding(866)// устанавливаем кодировку выводимого
            };
            // скрываем окно запущенного процесса
            psiOpt.WindowStyle = ProcessWindowStyle.Hidden;
            psiOpt.RedirectStandardOutput = true;
            psiOpt.UseShellExecute = false;
            psiOpt.CreateNoWindow = true;
            // запускаем процесс
            Process procCommand = Process.Start(psiOpt);
            // получаем ответ запущенного процесса
            StreamReader srIncoming = procCommand.StandardOutput;
            // выводим результат
            textBox1.Text = srIncoming.ReadToEnd();
        }
0
Администратор
Эксперт .NET
9096 / 4371 / 745
Регистрация: 17.04.2012
Сообщений: 9,140
Записей в блоге: 14
26.03.2013, 20:32 6
Цитата Сообщение от XxsergeyxX Посмотреть сообщение
Процесс запускает но зависает програма
И она отвисает когда жабовский сервер закрывается. Запустите процесс в другом потоке
0
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 49
26.03.2013, 20:40  [ТС] 7
Кликните здесь для просмотра всего текста
Запустите процесс в другом потоке

Покажите пожалуйста как ето сделать?(извините ток учусь)
0
Эксперт Java
4075 / 3809 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
26.03.2013, 21:14 8
Вот здесь описана работа с нитями (thread) - http://www.rsdn.ru/article/dotnet/CSThreading1.xml
0
0 / 0 / 0
Регистрация: 09.02.2013
Сообщений: 49
26.03.2013, 23:52  [ТС] 9
Вообщем с потоками разобрался но програма выкидывает ошибку из за того что запуск потока и вывод данных происходит одновременно и выводиться просто нечему в переменной значение null есть идея использовать Timer на вывод ток с таймером я не знаю как работать(((( помогите покажите как его использовать?
Вот код программы:
C#
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Threading;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            Control.CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();
           
            
 
        }
        public StreamReader srIncoming;
        public void psiStart()
        {
            ProcessStartInfo psiOpt = new ProcessStartInfo(@"cmd.exe", @"/C ""JAVA -Xms8m -Xmx32m -Xbootclasspath/p:./libs/jsr166.jar -cp ./libs/*;Server.jar loginserver.LoginServer")
            {
                StandardOutputEncoding = Encoding.GetEncoding(866)// устанавливаем кодировку выводимого
            };
            // скрываем окно запущенного процесса
            psiOpt.WindowStyle = ProcessWindowStyle.Hidden;
            psiOpt.RedirectStandardOutput = true;
            psiOpt.UseShellExecute = false;
            psiOpt.CreateNoWindow = true;
            psiOpt.RedirectStandardError = true;
            // запускаем процесс
            Process procCommand = Process.Start(psiOpt);
            
            srIncoming = procCommand.StandardOutput;
 
        }
 
       
        private void Запуск_Click(object sender, EventArgs e)
        {
            
            textBox1.Clear();
            string mycommand = textBox1.Text;
            Thread td = new Thread(psiStart);
            td.Start();
            
                        
            textBox1.Text = srIncoming.ReadToEnd();
            
        }
 
        private void domainUpDown1_SelectedItemChanged(object sender, EventArgs e)
        {
 
        }
 
       
 
    }
 
     
}
0
Миниатюры
Запуск Java приложения и вывод консоли в форму  
8 / 8 / 3
Регистрация: 21.11.2014
Сообщений: 95
04.02.2018, 00:49 10
XxsergeyxX, решил проблему?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2018, 00:49

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вывод из консоли в форму
Добрый день. У меня есть приложение, которое выводит SMART инфо о диске в консоль. Хочется выводить...

Запуск java приложения
подскажите как запустить java приложение с интерфейсом как exe программу , код пишу в нетбин

Запуск java приложения
Привет всем. Подскажите, пож, новичку как запускать приложение, написанное в Eclipse на другом...

Запуск java приложения
Привет всем. Решил подучить java, скачал хорошую книгу и начал читать сразу со Swing, так как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.