Runtime.getRuntime.Exec() und SWT

schwarzenegger

Grünschnabel
Hi,

ich möchte nach Betätigung eines Buttons eine Konsole öffnen und
einen Server und mehrere Clients starten.

Leider starten die Clients erst,
wenn ich meine SWT Anwendung komplett schliesse.

Hier ein Bild vom Button:

zuytxt27.jpg


Hier ein Bild vom Server bei dem 2 Clients angemeldet sind
aber rechts neben den Clients sollte nicht Processing Map
sondern Ready to Play stehen:

in47bkph.jpg


Der Server + Clients sollten so aussehen:

83zbx9mg.jpg


Hier mein Code wie ich den Server und die Clients aufrufe + SWT-Applikation:

Code:
package snippets;

import java.io.File;
import java.io.IOException;

import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class WidgetWindow extends ApplicationWindow {
	
	private String[] serverCommand = {"cmd.exe", "/C", "AiServer.exe -start -var=STANDARD -lvl=20 -port=16713"};
	private String[] clientCommand = {"cmd.exe", "/C", "java -jar NICE.jar localhost 16713 Client"};

	public WidgetWindow(Shell shell) {
		super(shell);
	}

	protected Control createContents(Composite parent) {
		getShell().setText("Widget Window");
		parent.setSize(400, 250);
		FormLayout fl = new FormLayout();
		parent.setLayout(fl);
		Button bt = new Button(parent, SWT.PUSH);
		bt.setText("Starte Server und Clients");
		FormData fd = new FormData();
		fd.bottom = new FormAttachment(100, -5);
		fd.right = new FormAttachment(100, -5);
		bt.setLayoutData(fd);

		bt.addSelectionListener(new SelectionAdapter() {

			@Override
			public void widgetSelected(SelectionEvent arg0) {
				getShell().getDisplay().asyncExec(new Runnable() {

					@Override
					public void run() {
						try {

							Runtime.getRuntime().exec(serverCommand, null, new File("C:\\Dokumente und Einstellungen\\Administrator\\Desktop\\Diplomacy\\Server\\aiserver\\"));
				
							Runtime.getRuntime().exec(clientCommand, null, new File("C:\\Dokumente und Einstellungen\\Administrator\\Desktop\\"));

							Runtime.getRuntime().exec(clientCommand, null, new File("C:\\Dokumente und Einstellungen\\Administrator\\Desktop\\"));

						} catch (IOException e) {
							e.printStackTrace();
						}
					}

				});
			}

		});

		return parent;
	}

	public static void main(String[] args) {
		WidgetWindow wwin = new WidgetWindow(null);
		wwin.setBlockOnOpen(true);
		wwin.open();
		Display.getCurrent().dispose();

	}
}

Kann mir jemand weiterhelfen.

Ich komme echt net weiter.

Vielen Dank.
 
Zurück