.bat Dateien starten, Ausgabe einlesen und Befehle übergeben

K

KlemensyXYZ

Gast
Moin,

ich möchte mit meinem Programm eine .bat Datei starten.

Das mache ich so:
Java:
package starten;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Starten
{
	public static void main (String args[]) throws IOException, InterruptedException
	{
		ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "start.bat");
	    processBuilder.directory(new File("D:/Bukkit/"));
	 
	    final Process process = processBuilder.start();
	    ExecutorService executorService = Executors.newSingleThreadExecutor();
	    executorService.execute(new Runnable() {
	      public void run() {
	        Scanner scanner = new Scanner(process.getInputStream());
	        while (scanner.hasNextLine()) {
	          System.out.println(scanner.nextLine());
	        }
	        scanner.close();
	      }
	    });
	 
	    System.out.println(process.waitFor());
	    executorService.shutdown();
	}
}

um das zu testen habe ich die Start.bat von meinem Bukkit Minecraftserver genommen.
Dabei gibt es folgendes Problem, d.h. die ausgabe müsste so aussehen:
Code:
146 recipes
[Lnet.minecraft.server.Statistic;@2e7820
16 achievements
[Lnet.minecraft.server.Statistic;@2e7820
16:05:09 [INFO] Starting minecraft server version Beta 1.5_02
16:05:09 [INFO] Loading properties
16:05:09 [INFO] Starting Minecraft server on *:25565
un noch einiges mehr an Text.
Die Ausgabe sieht aber so aus:
Code:
146 recipes
[Lnet.minecraft.server.Statistic;@2e7820
16 achievements
>
>
>
>

warum können die restlichen Zeilen nicht angezeigt werden?
Mache ich irgendetwas falsch?

Nun zu meiner 2. Frage:
wenn ich es denn irgendwann einmal geschafft habe möchte ich der .bat Datei, bzw. der cmd ausführung einer bestimmeten Datei Befehle übergeben.
Dies könnte man auch anhand des Minecraft Servers testen.
Hier könnte ein Befehl z.B. so aussehen
Code:
/day
.
Wie kann ich das tun?

Danke
 

U2nt

Bekanntes Mitglied
Wieso den Umweg beim Minecraft-Server? Minecraft is doch in Java programmiert, die main Aufrufen könnte auch eine Alternative sein.
 

Network

Top Contributor
Nur mal so... nenne die .bat lieber nicht start... sondern nimm einen ausgefalleneren Namen.
Ich habe batch-Dateien schon lange nicht mehr verwendet aber ich glaube du darfst die Datei nicht so nennen wie ein Befehl der (so genau weiss ich es nicht mehr) batch ausführen kann oder in der batch-Datei drin steht =)
 

Andi_CH

Top Contributor
Funktioniert wunderbar!

Deine Probleme liegen beim Minecraft-Geschwür und nicht im Javaprogramm


Edit - kann keine Attachments anhängen - das bat halt als code am Ende ...
Java:
import java.io.File;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class StarteBat {

	public static void main (String args[]) {
		ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "hello.bat klemensyXYZ");
		processBuilder.directory(new File("C:/temp/"));
		try {
			final Process process = processBuilder.start();
			ExecutorService executorService = Executors.newSingleThreadExecutor();
			executorService.execute(new Runnable() {
				public void run() {
					Scanner scanner = new Scanner(process.getInputStream());
					while (scanner.hasNextLine()) {
						System.out.println(scanner.nextLine());
					}
					scanner.close();
				}
			});

			System.out.println(process.waitFor());
			executorService.shutdown();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

hello.bat
Code:
@echo off
echo hallo %1
return 1
 
Zuletzt bearbeitet:
S

Spacerat

Gast
In welchen Abständen schreibt denn der MC-Server seine Log-Daten in die Console? Kann es sein, dass des Runnable nach der besagten Zeile keinen Input mehr bekommt (in diesem Fall hätte Scanner keine nextLine mehr) und sich dadurch vorzeitig beendet?
@Andy_CH: Ich denke mal, so ein "hello world" hilft hier nicht wirklich.
 

Andi_CH

Top Contributor
Wenn das nicht hilft ist keinem mehr zu helfen -

Die Frage war, wie ein bat zu starten ist und wie man Parameter übergibt.

Da steckt alles drin.

Mit welchen Parametern man ein Minraftgeschwür starten muss dass es keine Fehlermeldungen gibt, ist ja wohl nicht Thema eines Javaforums.
 
K

KlemensyXYZ

Gast
In welchen Abständen schreibt denn der MC-Server seine Log-Daten in die Console? Kann es sein, dass des Runnable nach der besagten Zeile keinen Input mehr bekommt (in diesem Fall hätte Scanner keine nextLine mehr) und sich dadurch vorzeitig beendet?
@Andy_CH: Ich denke mal, so ein "hello world" hilft hier nicht wirklich.

tja ich denke mal daran kanns nicht liegen.
Mincraft schreibt solange was in die Console, wie der Server läuft.

Theoretisch könnte ich ja auch die log.txt zum auffangen der Ausgabe mit nem anderen Scanner auslesen, oder?

Ich habe da aber auch mal eine andere Vermutung.
Auf meinem Server befinden sich auch verschiedene Plugins, die auch .jar's sind.
Vielleicht gibts da bei der Übergabe an mein Programm ein paar Probleme.
Wie man das löst weis ich aber trotzdem nicht. :autsch:

Wieso den Umweg beim Minecraft-Server? Minecraft is doch in Java programmiert, die main Aufrufen könnte auch eine Alternative sein.

Ja, auch bukkit is ne .jar Datei.
Könnte man auch hier die "Ausgabe" in einem anderen Programm abfangen?
Ich glaube nicht.
Außerdem:
Ich starte den Server und auch Minecraft mit einer .bat um ihnen mehr RAM zu geben, den sie aufgrund der hohen Spielerzahl und einem x512 texture pack auch brauchen.

Nur mal so... nenne die .bat lieber nicht start... sondern nimm einen ausgefalleneren Namen.
Ich habe batch-Dateien schon lange nicht mehr verwendet aber ich glaube du darfst die Datei nicht so nennen wie ein Befehl der (so genau weiss ich es nicht mehr) batch ausführen kann oder in der batch-Datei drin steht =)

Das hat keinen Erfolg gebracht.
Gleicher Fehler wie oben!

Mit welchen Parametern man ein Minraftgeschwür starten muss dass es keine Fehlermeldungen gibt, ist ja wohl nicht Thema eines Javaforums.

Wenn ich denn ne Fehlermeldung hätte könnte die mir vielleicht sogar weiterhelfen.
Und:
Das mit der Hello.bat hab ich vorher probiert bevor ich mich an andere Dinge gewagt habe.:pueh:
 
Zuletzt bearbeitet von einem Moderator:
S

Spacerat

Gast
tja ich denke mal daran kanns nicht liegen.
Mincraft schreibt solange was in die Console, wie der Server läuft.
Fataler Irrtum!
Klar schreibt Minecraft immer mal was in die Konsole solange es läuft. Nur leider kann es vorkommen, dass es dieses gerade nicht getan hat, während deine Anwendung die augenblicklich letzte Zeile gelesen hat. Dadurch wird
Java:
while(scanner.hasNextLine()) {
  ...
}
vorzeitig beendet. Selbst wenn Minecraft noch läuft, wird es deine Anwendung dann nicht mehr mitbekommen. Kurzgesagt: Diese Abbruchbedingung muß eine andere werden. ;)
 
K

KlemensyXYZ

Gast
ahhh

äh

und wo kommen dann die
Java:
>
>
>
>
in der exakten anzahl der noch fehlenden Zeilen her?

edit: hab das mal überprüft:
mein Java Code:
Java:
package starten;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class Starten 
{
	static String str;
	static int x = 1;
//	public Starten() throws IOException, InterruptedException
	public static void main (String args[]) throws Exception
	{
		{
			ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "Start.bat");
		    processBuilder.directory(new File("./Bukkit/"));
//		    processBuilder.start();
		    final Process process = processBuilder.start();
		    ExecutorService executorService = Executors.newSingleThreadExecutor();
		    executorService.execute(new Runnable() {
		      public void run() {
		        Scanner scanner = new Scanner(process.getInputStream());
		        while (x == 1) {
		          System.out.println(scanner.nextLine());
		        }
		        scanner.close();
		      }
		    });
		 
		    System.out.println(process.waitFor());
		    executorService.shutdown();
		}   
	
}

die Ausgabe:
Code:
[Lnet.minecraft.server.Statistic;@d08633
146 recipes
[Lnet.minecraft.server.Statistic;@d08633
16 achievements
>
>
>
>

also hat sich da leider nichts getan
 
Zuletzt bearbeitet von einem Moderator:
S

Spacerat

Gast
Ok... jetzt wird's allerdings problematisch... werden die Zeilen vllt. von einem MC-Unterprozess - evtl. ein Java Thread oder gar ein von dort aus neu gestartetem - geschrieben und der Scanner bekommt deswegen nichts davon mit? Mal experimentieren...
 

Kevin94

Top Contributor
Nur mal so: ein Prozess hat doch auch einen ErrorStream...
Das wäre zwar alles andere als Standartkonform, aber trotzdem vorstellbar.

Außerdem nutzt mincraft auch eigen Native Bibliotheken, wer sagt den, dass das Logging nicht nativ geschieht.
Aber dass würde ja dann trotzdem in einem der Streams landen, wenn es auch auf der Konsole erscheint, oder?
 
K

KlemensyXYZ

Gast
ähm muss ich was und was muss ich im Quelltext ändern?
oder hab ich da jetzt was falsch verstanden? ???:L
 
K

KlemensyXYZ

Gast
WUNDERBAR
ES GEHT (fast) :p

die Ausgabe:
Code:
[Lnet.minecraft.server.Statistic;@d08633
21:28:47 [INFO] Starting minecraft server version Beta 1.5_02
146 recipes
21:28:47 [INFO] Loading properties
[Lnet.minecraft.server.Statistic;@d08633
21:28:47 [INFO] Starting Minecraft server on *:25565
16 achievements
21:28:47 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-700-gf3ae4c3-b733jnks (MC: 1.5_02)
>
21:28:47 [INFO] Preparing level "world"
>
21:28:47 [INFO] Preparing start region
>
21:28:48 [INFO] [AuthMe] Using flatfile as datasource!
>
21:28:48 [INFO] [AuthMe] Cache for registrations is enabled!
>
21:28:48 [INFO] [AuthMe] 16 registered players loaded in 0.0090 seconds!
>
21:28:48 [INFO] [AuthMe] Version 0.72 was successfully loaded!
>
21:28:48 [INFO] CraftBookCommon 3.0-alpha2 enabled.
>
21:28:48 [INFO] CraftBookCommon: Permissions plugin detected! Using Permissions plugin for permissions.
>
21:28:48 [INFO] CraftBookCircuits 3.0-alpha2 enabled.
>
21:28:48 [INFO] CraftBookCircuits: Permissions plugin detected! Using Permissions plugin for permissions.
>
21:28:48 [INFO] CraftBookCircuits: Permissions plugin detected! Using Permissions plugin for permissions.
>
21:28:48 [INFO] CraftBookMechanisms 3.0-alpha2 enabled.
>
21:28:48 [INFO] CraftBookMechanisms: Permissions plugin detected! Using Permissions plugin for permissions.
>
21:28:48 [INFO] 1 cauldron recipe(s) loaded
>
21:28:48 [INFO] CraftBookVehicles 3.0-alpha2 enabled.
>
21:28:48 [INFO] CraftBookVehicles: Permissions plugin detected! Using Permissions plugin for permissions.
>
21:28:48 [INFO] [CreatureSpawner] version 1.1 by [Xstasy] enabled.
>
21:28:48 [INFO] GroupManager - INFO - Scheduled Data Saving is set for every 10 minutes!
>
21:28:48 [INFO] GroupManager version 1.0(alpha-5) is enabled!
>
21:28:48 [INFO] Fake Permissions version 2.5.2 is enabled!
>
21:28:48 [INFO] CraftBookCircuits: Permissions plugin detected! Using Permissions plugin for permissions.
>
21:28:49 [INFO] Loaded Essentials build 2.1.25 maintained by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo and ceulemans.
>
21:28:49 [INFO] Loaded EssentialsChat build 2.1.25 by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo and ceulemans.
>
21:28:49 [INFO] Fake Permissions version 2.5.1 is enabled!
>
21:28:49 [INFO] CraftBookCircuits: Permissions plugin detected! Using Permissions plugin for permissions.
>
21:28:49 [INFO] Loaded EssentialsProtect build 2.1.25 maintained by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo and ceulemans.
>
21:28:49 [INFO] Loaded EssentialsSpawn build 2.1.25 maintained by Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo and ceulemans.
>
21:28:49 [INFO] Lockette version 1.3.4 is being enabled!  Yay!
>
21:28:49 [INFO] Lockette: Detected craftbukkit build [733] ok.
>
21:28:49 [INFO] Lockette: Linked to GroupManager plugin version 1.0(alpha-5)
>
21:28:49 [INFO] Lockette: Ready to protect your containers.
>
21:28:49 [INFO] [mcMMO] Permissions enabled.
>
21:28:49 [INFO] mcMMO version 0.9.23 is enabled!
>
21:28:49 [INFO] [MotherNature] Using GroupManager version 1.0(alpha-5) for permission handling
>
21:28:49 [INFO] [MotherNature] Plugin enabled! (version 1.2)
>
21:28:49 [INFO] [OpenInv] version 1.1.1 is enabled!
>
21:28:49 [INFO] PlgEssentials version 4.2 is enabled!
>
21:28:49 [INFO] War> War v1.5.1 (MacArthur) is on.
>
21:28:49 [INFO] WorldEdit 4.4 enabled.
>
21:28:49 [INFO] WorldEdit: Permissions plugin detected! Using Permissions plugin for permissions.
>
21:28:49 [INFO] Done (0,164s)! For help, type "help" or "?"
>

Hat jetzt noch wer eine Idee wie man da die ganzen
Code:
>
rausbekommt?

Und dann noch das:
Nun zu meiner 2. Frage:
wenn ich es denn irgendwann einmal geschafft habe möchte ich der .bat Datei, bzw. der cmd ausführung einer bestimmeten Datei Befehle übergeben.
Dies könnte man auch anhand des Minecraft Servers testen.
Hier könnte ein Befehl z.B. so aussehen
Code:
/day
.
Wie kann ich das tun?

Danke
 

Kevin94

Top Contributor
Java:
String tmp=inputScanner.nextLine();
if(!tmp.equals(">"))
System.out.println(tmp);

Den genauen String auf den geprüft wird ggf variieren (Leerzeichen,Zeilenendezeichen )

EDIT: 2.Frage:

Schreib deinen befehl einfach in
Code:
process.getInputStream();
und Enter(\r\n) nicht vergessen
 
Zuletzt bearbeitet:
K

KlemensyXYZ

Gast
Java:
String tmp=inputScanner.nextLine();
if(!tmp.equals(">"))
System.out.println(tmp);

Den genauen String auf den geprüft wird ggf variieren (Leerzeichen,Zeilenendezeichen )

Danke, geht:applaus:

EDIT: 2.Frage:

Schreib deinen befehl einfach in
Code:
process.getInputStream();
und Enter(\r\n) nicht vergessen

ähm hättest du nen Quelltext?
Ich kann mir das grade nicht vorstellen:eek:
 

Kevin94

Top Contributor
Java:
public void writeCommand(Process p,String command)
{
    String tmp=command+"\r\n";
    p.getOutputStream().write(tmp.getBytes());
}
 
Zuletzt bearbeitet:
K

KlemensyXYZ

Gast
ok.
Ich habe mir nun mit Netbeans schnell ne GUI zusammengeklickt.
ich habe vor die ausgabe nutzergerecht in einem Textfeld auszugeben.
Der Quelltetxt sieht jetzt so aus:
Java:
package gui;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class Starten
{
	static String str;
	static int x = 1;
	public static boolean starten = false;
	static String tmp2;
	public static String tmp;
	static String text;
	
	public static void main (String args[]) throws Exception
	{
		if (starten == true)
		{
			try
			{
				BufferedReader in = new BufferedReader (new FileReader("./Optionen/optionen.txt"));
				str = in.readLine();
				in.close();	
			}		
			catch (Exception e)
			{		
				System.out.println("hier " + e);
			}	
			
			if (str.equals("1024"))
			{
				ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "Start.bat");
			    processBuilder.directory(new File("./Bukkit/"));
			    final Process process = processBuilder.start();
			    ExecutorService executorService = Executors.newSingleThreadExecutor();
			    executorService.execute(new Runnable() {
			    	public void run() 
			    	{
			    		Scanner scanner = new Scanner(process.getInputStream());
			        	Scanner scanner2 = new Scanner(process.getErrorStream());
			        	while (x == 1) 
			        	{
			        		try
			        		{
			        			tmp1 = scanner.nextLine();
			        		}
			        		catch (Exception e)
			        		{
			        			System.out.println(e);
			        		}
			        		
			        		if(!tmp1.equals(">"))
			        		{
			        			tmp2 = tmp1;
			          		}
			        		
			        		try
			        		{
			        			tmp3 = scanner2.nextLine();
			        		}
			        		catch (Exception e)
			        		{
			        			System.out.println(e);
			        		}
			        		
			        		if (tmp3 == null)
			        		{
			        			tmp = tmp2;
			        		}
			        		if (tmp3 != null)
			        		{
			        			tmp = tmp2 + '\n' + tmp3;
			        		}
			        		GUI_Haupt guihaupt = new GUI_Haupt();
			        		text = "Start" + '\n';
			            	text = text.concat(tmp) + '\n';
			            	System.out.println(text);
			            	guihaupt.TextAusgabefeldLog.setText(text);			        		
			        	}
			        	scanner.close();
			    	}
			    });
			 
			    System.out.println(process.waitFor());
			    executorService.shutdown();
			}   
		}
		
	}
}

wenn ich jetzt aber auf den Button zum Starten klicke Friert das Programm ein und es passiert gar nichts mehr.

edit: Ich hab da son ne Idee. Müsste ich die Klasse mit dem auslesen der .bat in nem neuen Thread starten? Oder geht das auch anders und einfacher? Mit den Threads hab ich noch nichts gemacht:oops:

Oder habe ich einfach schon wieder was falsch gemacht?
 
Zuletzt bearbeitet von einem Moderator:

Kevin94

Top Contributor
Mit dem Code allein kann man das Problem nicht bestimmen. Wichtig ist in diesem Fall die ActionListener Methode. Solange die nicht beendet wurde, wird das GUI auch nicht neu gezeichnet, d.h. wenn in dieser Methode viel zeitintensives drin steht, musst du einen neuen Thread starten.

PS: das von gestern Abend war quatsch, es muss
Code:
p.getOutputStream().write()
heißen und nicht
Code:
p.getInputStream().write()
 
K

KlemensyXYZ

Gast
... wenn in dieser Methode viel zeitintensives drin steht, musst du einen neuen Thread starten.

ich würde nicht sagen das dass Zeitintensiv ist sondern dauerhaft :D
Ich befrag mal mein "Java ist auch eine Insel" nach den Threads.
Wenns nix wird melde ich mich wieder.

PS: das von gestern Abend war quatsch, es muss
Code:
p.getOutputStream().write()
heißen und nicht
Code:
p.getInputStream().write()

hatte ich auch noch nicht getestet ;)

edit1:
Ich glaube da könnts ein Problem geben.
Hier steht das ein Thread ne run() Methode braucht.
In meiner Klasse ist aber schon eine drin.
Wie mache ich das denn jetzt?

edit2:
Problem aus edit1 gelöst.
Trtotzdem kommt das ganze immer noch nicht in der TextArea an.
 
Zuletzt bearbeitet von einem Moderator:
K

KlemensyXYZ

Gast
Moin
ähm ja habe da schon wieder ein Problem.
und zwar werden meine Befehle nicht ausgeführt.

Ich habe das so versucht:
Java:
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "Start.bat");
processBuilder.directory(new File("./Bukkit/"));
final Process process = processBuilder.start();
new ProzessUebergeben(process);

die Klasse ProzessUebergeben sieht so aus:
Java:
public class ProzessUebergeben 
{
	public static Process process2;	
	public ProzessUebergeben(Process process)
	{
		process2 = process;
	}
	
	public static Process getProcess()
	{
		return process2;
	}
}

und soll des Prozess an die Klasse weitergeben die den Prozess ausführt.
Diese sieht so aus:

Java:
public class BefehlAusführen 
{
	Process process;
	static String command;
	
	public BefehlAusführen()
	{
		process = ProzessUebergeben.getProcess();
		System.out.println(command);
		System.out.println(process);
		String tmp = command + "\r\n";
	    try 
	    {
			process.getOutputStream().write(tmp.getBytes());
		} 
	    catch (Exception e) 
	    {
			e.printStackTrace();
		}
	}
}

Die Ausgabe dieser Klasse sieht so aus:
Code:
/stop
java.lang.ProcessImpl@18ee9d6

Ich denke mal das bis hierhin alles stimmt.
Trotzdem wird der Befehl nicht ausgeführt.

Wo ist denn mein Fehler?
 

Kevin94

Top Contributor
Es liegt daran wie du das Programm startest:
Du startest eine neue cmd und in dieser eine bat in der du dann minecraft startest.

Ums kurz zu machen du schreibst den befehl in die cmd und nicht in minecraft. Also versuch erstmal, die bat ohne die cmd zu starten, oder minecraft direkt aus java zu starten.

btw: hast du schon mal was von statischen Methoden gehört, z.B. wie in Maths.
Die hauptarbeit in Konstruktoren zu erledigen ist schlechtes Design
 
K

KlemensyXYZ

Gast
Es liegt daran wie du das Programm startest:
Du startest eine neue cmd und in dieser eine bat in der du dann minecraft startest.

Ums kurz zu machen du schreibst den befehl in die cmd und nicht in minecraft. Also versuch erstmal, die bat ohne die cmd zu starten, oder minecraft direkt aus java zu starten.

wenn ich das
Code:
"cmd",
in
Java:
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "Start.bat");
			    processBuilder.directory(new File("./Bukkit/"));
			    final Process process = processBuilder.start();

also so
Java:
ProcessBuilder processBuilder = new ProcessBuilder("/c", "Start.bat");
			    processBuilder.directory(new File("./Bukkit/"));
			    final Process process = processBuilder.start();
bekomme ich diese Fehlermeldung:
Code:
java.io.IOException: Cannot run program "/c" (in directory ".\Bukkit"): CreateProcess error=2, Das System kann die angegebene Datei nicht finden
	at java.lang.ProcessBuilder.start(Unknown Source)
	at bukkit_gui.ServerStarten.<init>(ServerStarten.java:28)
	at bukkit_gui.NeuerThread.run(NeuerThread.java:10)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: CreateProcess error=2, Das System kann die angegebene Datei nicht finden
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(Unknown Source)
	at java.lang.ProcessImpl.start(Unknown Source)
	... 4 more

hast du das vielleicht anders gemeint?
 
Zuletzt bearbeitet von einem Moderator:

Kevin94

Top Contributor
das "\c" ist eine Aufrufoption von cmd.exe -> musst du auch weglassen

Schreib einfach:
Java:
ProcessBuilder processBuilder = new ProcessBuilder("Start.bat");
processBuilder.directory(new File("./Bukkit/"));
final Process process = processBuilder.start();
 
K

KlemensyXYZ

Gast
das hat nichts gebracht.
Der Befehl wird immer noch nicht ausgeführt.

Der Server läuft immer noch obwohl das Programm beendet wurde.
 
K

KlemensyXYZ

Gast
das hier:
Code:
@ECHO OFF
IF /I "%PROCESSOR_ARCHITECTURE:~-2%"=="64" "%ProgramFiles(x86)%\Java\jre6\bin\java.exe" -Xms1024M -Xmx1024M -jar "%~dp0craftbukkit-0.0.1-snapshot.jar"
IF /I "%PROCESSOR_ARCHITECTURE:~-2%"=="86"  java -Xms1024M -Xmx1024M -jar "%~dp0craftbukkit-0.0.1-snapshot.jar"

PAUSE

ist die Original .bat; habe daran nichts geändert
 

Kevin94

Top Contributor
dann würde ich vorschlagen folgendes auszuprobieren:

Java:
ProcessBuilder processBuilder;
if(System.getProperty("os.arch")=="x64") 
    processBuilder=new ProcessBuilder("%ProgramFiles(x86)%\Java\jre6\bin\java.exe", "-Xms1024M", "-Xmx1024M", "-jar","%~dp0craftbukkit-0.0.1-snapshot.jar");
else
    processBuilder=new ProcessBuilder("java", "-Xms1024M", "-Xmx1024M", "-jar","%~dp0craftbukkit-0.0.1-snapshot.jar");   
processBuilder.directory(new File("./Bukkit/"));
final Process process = processBuilder.start();
 
K

KlemensyXYZ

Gast
Java:
"%ProgramFiles(x86)%\Java\jre6\bin\java.exe"
wird von eclipse rot unterstrichen.
Die Fehlermeldung ist:
Code:
Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
ich denke mal das das mit den
Code:
%
zusammenhängt

kann man das nicht ganz weglassen und nur die 32 bit Variante ausführen?
 
K

KlemensyXYZ

Gast
ich habde das jetzt so:
Java:
ProcessBuilder processBuilder;
processBuilder=new ProcessBuilder("java", "-Xms1024M", "-Xmx1024M", "-jar","%~dp0craftbukkit-0.0.1-snapshot.jar");   
processBuilder.directory(new File("./Bukkit/"));
final Process process = processBuilder.start();
und bekomme folgenden Fehler:
Code:
java.util.NoSuchElementException: No line found
Exception in thread "pool-1-thread-1" java.lang.NullPointerException
	at bukkit_gui.ServerStarten$1.run(ServerStarten.java:54)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
ich denke mal das der Scanner keine Ausgabe zum einlesen mehr bekommt.
Wie bekomme ich die denn wieder?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Ich kann mit einem Eclipse 3.2 keine Java Dateien Starten Java Basics - Anfänger-Themen 10
B Externe .exe-Dateien starten +Runtime Java Basics - Anfänger-Themen 6
G exe-Dateien zum Starten von Java-Programmen? Java Basics - Anfänger-Themen 13
N mit .bat Dateien den Javaw Interpreter starten? Java Basics - Anfänger-Themen 5
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
I Dateien aus dem Resource Folder laden Java Basics - Anfänger-Themen 2
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
A Zwei XML-Dateien Mergen Java Basics - Anfänger-Themen 14
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
LetsSebi Dateien werden nicht in Zip gespeichert Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10
MiMa log4j als separate Dateien in Schleife? Java Basics - Anfänger-Themen 6
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
S Lese- / Schreibfähigkeit von Dateien sicherstellen Java Basics - Anfänger-Themen 1
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
J Java findet plötzlich die Dateien im Projekt nicht mehr. Java Basics - Anfänger-Themen 12
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
L Classpath Alle Dateien im Classpath finden Java Basics - Anfänger-Themen 4
MiMa Formate für Dateien und Pfade? Java Basics - Anfänger-Themen 1
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
L Richtige Reihenfolge der Dateien Java Basics - Anfänger-Themen 5
CptK Datentypen Text Dateien einlesen Java Basics - Anfänger-Themen 3
J Logging erzeugt zwei dateien.... Java Basics - Anfänger-Themen 7
A Dateien Verschieben Java Basics - Anfänger-Themen 1
M Mehre Dateien parallel kopieren mit Multithreading Java Basics - Anfänger-Themen 8
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
J Java-Dateien lassen sich nicht editieren Java Basics - Anfänger-Themen 46
E FTP Dateien hochladen Java Basics - Anfänger-Themen 3
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
Korvinus Vergleichen von 2 csv-Dateien Java Basics - Anfänger-Themen 2
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
M "substring()" mit Dateien und Pfadangaben Java Basics - Anfänger-Themen 5
Voreck Jar Dateien Standart programm ändern Java Basics - Anfänger-Themen 12
K Dateien aus Source-Package verwenden Java Basics - Anfänger-Themen 10
B Dateien aus dem "resource" - Folder kopieren in Verzeichnis Java Basics - Anfänger-Themen 9
B Kopieren von Dateien mit Adminberechtigungen Java Basics - Anfänger-Themen 14
F Threads ftp4j, viele Dateien upload Java Basics - Anfänger-Themen 5
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
X Dateien direkt hintereinander schreiben, Dateiname Java Basics - Anfänger-Themen 25
G Messwerte in 2 Dateien schreiben Java Basics - Anfänger-Themen 20
C Verarbeitung von sehr großen Dateien Java Basics - Anfänger-Themen 52
F Input/Output Dateien lesen/schreiben Java Basics - Anfänger-Themen 1
V Mehrere Dateien aus JFileChooser in eine ArrayList speichern Java Basics - Anfänger-Themen 2
K Dateien lesen | IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
Bluedaishi for schleife um Dateien wieder zusammen zu fügen Java Basics - Anfänger-Themen 11
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
J Dateien für anderen User "mitgeben" Java Basics - Anfänger-Themen 1
S Dateien mit Java verschieben Java Basics - Anfänger-Themen 6
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
E Dateien werden nicht gelöscht Java Basics - Anfänger-Themen 10
S Class Dateien decompilieren Java Basics - Anfänger-Themen 4
T Fehler beim Schreiben in Dateien! Java Basics - Anfänger-Themen 4
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8
Z Mehrere XML-Dateien zu einer zusammenfügen Java Basics - Anfänger-Themen 3
K JAR Dateien einbinden - funkt nicht wie es sollte... Java Basics - Anfänger-Themen 22
M Threads nio Dateien kopieren, Threads und Gui Java Basics - Anfänger-Themen 0
J *.sql Dateien in Java Java Basics - Anfänger-Themen 1
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3
P Compiler-Fehler .java Dateien kompilieren und .class Dateien zur .jar Java Basics - Anfänger-Themen 4
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
M Input/Output Arbeiten mit extrem vielen Dateien Java Basics - Anfänger-Themen 8
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
N tar-Dateien Java Basics - Anfänger-Themen 6
B Methoden Dateien konvertieren Java Basics - Anfänger-Themen 3
L Dateien speichern/auslesen Java Basics - Anfänger-Themen 5
M Input/Output Probleme beim Parsen von CSV und TXT Dateien Java Basics - Anfänger-Themen 7
P Wiedereinstieg und kann keine Dateien mehr öffnen... Java Basics - Anfänger-Themen 13
F Classpath Dateien einbinden und Classpath durchsuchen Java Basics - Anfänger-Themen 2
N Java Programm zum Suchen und Ersetzen von Text Dateien Java Basics - Anfänger-Themen 10
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
U Best Practice Nicht-permanente Links auf Dateien Java Basics - Anfänger-Themen 5
B In welchem (Default) Pfad erstellt Java Dateien? Java Basics - Anfänger-Themen 4
I Methoden zum lesen und speichern von Dateien Java Basics - Anfänger-Themen 2
B .ut dateien ignorieren und fortsetzen Java Basics - Anfänger-Themen 9
R Ressourcen in JAR-Dateien Java Basics - Anfänger-Themen 2
J jar Dateien global erreichbar machen Java Basics - Anfänger-Themen 3
L Zusammenführen mehrerer .txt Dateien Java Basics - Anfänger-Themen 4
M Dateien erstellen/ bearbeiten/ lesen Java Basics - Anfänger-Themen 9
S Dateien in RAM kopieren und ausführen? Java Basics - Anfänger-Themen 4
O Java Dateien verschlüsseln? Java Basics - Anfänger-Themen 22
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
B Dateien kopieren, entpacken, XML auslesen! Java Basics - Anfänger-Themen 7
B Dateien Verschieben! Java Basics - Anfänger-Themen 8
B ältere Dateien verschieben Java Basics - Anfänger-Themen 3
G Erste Schritte Nach bestimmten Dateien suchen und dann in die Registry schreiben. Java Basics - Anfänger-Themen 6
J Laden von Dateien Java Basics - Anfänger-Themen 19
I Xml dateien zusammenfügen Java Basics - Anfänger-Themen 12
I Dateien in Ordner und Unterordner durchsuchen Java Basics - Anfänger-Themen 18
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
N Input/Output Große Dateien schnell Speichern/auslesen Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben