Пишу оболочку для сервера Minecraft и столкнулся со следующей проблемой. Есть поток, в котором непосредственно запускается jar файл сервера. Вот код:
public class ServerThread extends Thread{
volatile public Process proc;
volatile public InputStream is;
volatile public OutputStream os;
volatile public InputStreamReader reader;
volatile public OutputStreamWriter writer;
volatile public BufferedReader breader;
volatile public BufferedWriter bwriter;
@Override
public void run() {
proc = Runtime.getRuntime().exec("java -jar minecraft_server.1.10.2.jar nogui");
is = proc.getInputStream();
os = proc.getOutputStream();
reader = new InputStreamReader (is);
breader = new BufferedReader (reader);
writer = new OutputStreamWriter (os);
bwriter = new BufferedWriter (writer);
while (true) {
String str = "";
if(breader.ready()){
str = breader.readLine();
}
//
// Some work with strings
//
if(str.contains ("[Server Shutdown Thread/INFO]: Stopping server")){
break;
}
}
System.out.println("exiting");
serverState.set(0);
}
synchronized public void sendCommand(String str){
bwriter.write(str);
bwriter.flush();
}
}
Этот поток запускается из некоторого внешнего потока, откуда также вызывается функция sendCommand(""). Примерно так:
class Test{
public static void main (String[] args) {
ServerThread thr = new ServerThread();
thr.start();
thr.sendCommand("/stop"); //stop server. See minecraft server commands
}
}
Однако после вызова sendCommand(); ничего не происходит, как будто запись в поток не произошла. Как решить эту проблему?
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Весьма актуальный как мне кажетсяЕсть библиотеки, имплементить всё подряд не дело, так как всё имеет свойство устаревать + зачастую нам не нужен...
Вчера вечером работал над проектом, все было нормально, сегодня захожу и у меня ошибка во всех файлах
ЗдравствуйтеУстановил приложение на хостинг, создал базу, добавил таблицы, вьюхи и т