Batchdatei wird nicht ausgeführt (Keine Fehlermeldung)

uweb95

Grünschnabel
Hi, ich möchte in einem Java Programm eine batch Datei ausführen, mit der ich wiederum eine .jar Datei ausführe.
Allerdings passiert bei mir nichts, es wird nicht mal eine Fehlermeldung aus gegeben!

Code in der Batch Datei:
Code:
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui

Code zum Ausführen:
Code:
try{    
        ProcessBuilder processBuilder = new ProcessBuilder(System.getenv("appdata") + "/ServerManager/HierServerEinfügen/vanilla.bat");
        
        
        Process process = processBuilder.start();
        
               process.waitFor();
               
        }
        catch (Exception e){
           System.out.println("Fehler");
        }

der Pfad der "vanilla.bat" ist "C:\Users\owner\AppData\Roaming\ServerManager\HierServerEinfügen\vanilla.bat"
Vieleicht kennt auch jemand einen Weg wie man eine .jar Datei direkt mit Java ausführen kann, denn wenn ich statt "vanilla.bat", "minecraft_server.jar" eingebe kommt "CreateProcess error=193, %1 ist keine zulässige Win32-Anwendung"
 
Hi

Du könntest ihn so starten
Java:
Process pro=Runtime.getRuntime().exec("cmd /c start "+ System.getenv("appdata") + "/ServerManager/HierServerEinfügen/vanilla.bat");

Edit
Was mir jetzt gerade erst einfällt :D
Du kannst natürlich die jar auch direkt starten per java -jar
Java:
Process pro=Runtime.getRuntime().exec("java -jar "+ System.getenv("appdata") + "/ServerManager/HierServerEinfügen/minecraft_server.jar");
Lg hendl
 
Zuletzt bearbeitet:
ok, werde es aber erst morgen ausprobieren, hab gerade meinen Pc neu aufgesetzt und muss NetBeans neu installieren!

und wie muss ich das dann einfügen?
so:
Code:
private void startActionPerformed(java.awt.event.ActionEvent evt) {                                      
        Process pro=Runtime.getRuntime().exec("java -jar System.getenv("appdata") + "/ServerManager/HierServerEinfügen/minecraft_server.jar"");
    }
funktioniert es nicht, da sagt die IDE, dass 1 geschlossene Klammer und 2 Semikolon fehlen und "not a statement"!
 
Hi,

der Codeausschnitt von hendl war nicht ganz richtig, hier haben sich ein paar kleinere Fehler eingeschlichen. Sollten aber nicht so schwer zu erkennen und beheben sein?

Java:
private void startActionPerformed(ActionEvent evt) {
    String cmd = "java -jar " + System.getenv("appdata")
        + "/ServerManager/HierServerEinfügen/minecraft_server.jar";
    Process pro = Runtime.getRuntime().exec(cmd);
}

Grüße,
BK
 
wenn ich den Code ausführe passiert: nichts...
allerdings war Zeile 4 rot unterstrichen und als Lösungsvorschlag gab es nur die Möglichkeit einen try-catch Block einzufügen, was ich auch gemacht habe!
Java:
try {
            String cmd = "java -jar " + System.getenv("appdata")
            + "/ServerManager/HierServerEinfügen/minecraft_server.jar";
            Process pro = Runtime.getRuntime().exec(cmd);
        } catch (IOException ex) {
            Logger.getLogger(Hauptfenster.class.getName()).log(Level.SEVERE, null, ex);
        }
 
Hallo,

was erwartest du eigentlich was da passieren soll? Started denn beim Minecraft-Server automatisch eine GUI oder ähnliches? Die Meldungen auf der Konsole, die du sehen würdest, wenn du den Server manuell startest wirst du so nicht sehen, dann die Meldungen, glaube ich, an Streams Instanzen deines Objekts "pro" geleitet werden.

Gruß,
Wolf
 
Hi,

ausserdem gibts dann im Serververzeichnis noch eine server.log in der Fehlermeldungen protokolliert werden.

Grüße,
BK
 
Hallo,

was erwartest du eigentlich was da passieren soll? Started denn beim Minecraft-Server automatisch eine GUI oder ähnliches? Die Meldungen auf der Konsole, die du sehen würdest, wenn du den Server manuell startest wirst du so nicht sehen, dann die Meldungen, glaube ich, an Streams Instanzen deines Objekts "pro" geleitet werden.

Gruß,
Wolf
Ja, beim Vanilla Server startet eine Gui, außer man macht es über eine batch datei, bei der am ende "nogui" steht! (Beim Bukkit startet keine gui, ich habe allerdings Vanilla genommen!)

Hi,

ausserdem gibts dann im Serververzeichnis noch eine server.log in der Fehlermeldungen protokolliert werden.

Grüße,
BK

Das Problem ist ja, der Server wird nicht mal gestartet!
 
Schonmal ein

Java:
System.out.println(cmd);

gemacht. Die Ausgabe-Zeile kopiert und dann in die Kommando-Zeile eingegeben? Started der Server mit der kopierten Ausgabe?

Gruß,
Wolf
 
Hi.

Das Kommando-aus-String-Zusammengebastel sollte man lieber vermeiden. Unter Windows gibt es da ganz häßliche Quoting Regeln - zumal Java den übergebenen String daraufhin wieder mit einem StringTokenizer zerlegen muss; man kann es einfacher und kürzer auch ganz einfach so machen:
Java:
Process pro = new ProcessBuilder("java", "-jar",
   System.getenv("appdata") + "/ServerManager/HierServerEinfügen/minecraft_server.jar" ).start();
Dafür muss natürlich "java.exe" im PATH sein.

Was ist denn der Wert von pro.waitFor()?

Und lies mal die stdout und stderr Ausgabe aus.
 
Zurück