Linux-Commands über Java Anwendung ausführen

Status
Nicht offen für weitere Antworten.

Nicole81

Aktives Mitglied
Hallöchen zusammen,

ist es möglich aus einem Java-Programm heraus Linux-Kommandozeilenaufrufe los zu starten.

z.b. Ich drücke in meiner Java-Anwendung einen Button und er fürhrt ein "cp test.txt test1.txt" aus?

Danke, Liebe Grüße Nicole
 

P3AC3MAK3R

Top Contributor
Ja, das ist möglich (mit der Klasse Runtime).

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runtime.html#exec(java.lang.String)
 

Nicole81

Aktives Mitglied
Danke, genau das habe ich gesucht.

Allerdings verstehe ich noch nicht ganz, wie ich das ausführen kann.

Hier ein kleiner Tester:

Code:
import java.io.IOException;


public class TesterMain
{
	public static void main(String[] args) throws IOException
	{
		Runtime rt = Runtime.getRuntime();
		
		rt.exec("dir");
	}
}

Bringt mir aber eine IO-Exception wenn ich es über eine DOS-Konsole ausführe, was mache ich da falsch?

C:\workspace\ConsoleCommandTester\bin>java TesterMain
Exception in thread "main" java.io.IOException: CreateProcess: dir error=2
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at TesterMain.main(TesterMain.java:10)
 

Murray

Top Contributor
Runtime#exec startet ein Programm, dir ist aber ein DOS-Kommando, welches der Command-Interpreter intern versteht (und nicht etwa ein externen Programm).
Abhilfe:
Code:
rt.exec( "cmd.exe /c dir");
Der Command-Interpreter wird also gestartet und bekommt sofort die eigentlich auszuführende Aktion als Parameter übergeben.
 

Nicole81

Aktives Mitglied
Ahh wunderbar, es funktioniert, danke Jungs!! :D

Eine kleine Frage noch :oops:

Was müsste ich bei einem Linux-System in der exec-methode angeben um Befehler wie cp, ls usw auszuführen?

Liebe Grüße
 

sunfy

Mitglied
Ah, ich sehe du hast das gleiche Problem wie ich gerade.
Unter Windows klappt das mit "exec( "cmd /c dir");" doch unter Linux / Unix gibt es den Befehl cmd ja nicht.

Da muss man irgendwie mit der shell anstatt command arbeiten, aber wie genau hab ich auch noch nicht herausgefunden.

Gruß Sunfy
 

HoaX

Top Contributor
idR sollte es ein "/bin/sh -c 'das was | ich ausfuehren && will'" tun.

du kannst eigentlich jedes programm auch direkt starten, ohne shell. nur wenn du wildcards verwendest oder shell-builtins wird es nötig.

aber wenn du eh nur dir, ls, cp usw ausführen willst warum dann der umweg über die shell anstatt direkt zu File/File{Input,Output}Stream zu greifen? dann bist du auf jedenfall platformunabhängig
 

joergh

Aktives Mitglied
Gibt es bei exec die Möglichkeit
a) die Ausgaben, die manche Befehle haben, in Java einzulesen?
b) darauf zu warten, dass ein Befehl ausgeführt wurde? Mir scheint es so, dass die Befehle nur abgesetzt werden. Ich suche nach einer Möglichkeit darauf zu warten, dass das Kommando erfolgreich /-los war.

Gruß&Danke!
 

joergh

Aktives Mitglied
Okay, schon mal danke.
Grundsätzlich läuft es jetzt, wie ich es will - es darf nur kein programmfehler aufkommen. Leider bin ich scheinbar im Moment zu blöd oder zu blind, die Programmausgabe, die in der Shell ausgegeben wird, wenn ich den befehl dort eingebe, in meinem Javaprogramm einzulesen.
Kann mir da noch jemand helfen? Danke!
 
K

Killi138

Gast
Ich hasse es, auf der Suche nach etwas zu sein, jemanden zu finden der das gleiche Problem hat und keiner ne Antwort parat hat...

..Dein Problem wird sich sicherlich schon selbst gelöst haben, der Thread ist ja noch von Januar, allerdings für die nachfolgenden Leser:

Ich habe gerade eine Methode geschrieben, die mir ein bestimmtes Programm beendet (über den kill-Befehl), dazu muss man aber erstmal die ProzessID kennen, die man ja über "ps -A" herausbekommt. "ps -A" gibt eine Rückgabe, welche ich einlesen muss.
Wie, steht hier:

Code:
public void killProcess(String prog) {
	  try {
		  Process processes = Runtime.getRuntime().exec("ps -A");
		  BufferedReader procout = new BufferedReader( new InputStreamReader(processes.getInputStream()) );
		  String line;
		  while ((line = procout.readLine()) != null) {
			  if (line.endsWith(prog)) {
				  String processID = line.substring(0, line.indexOf("?"));
				  System.out.println("Killing process " + processID.trim() + " (" + prog + ")");
				  Runtime.getRuntime().exec("kill " + processID.trim());
			  }
		  }
	  }
	  catch (Exception ex) {
		  System.out.println("Unable to kill process " + prog);
		  ex.printStackTrace();
	  }
  }


Beispielaufruf: 

kill("kaffeine");
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
M Eclipse unter Linux Lite Allgemeine Java-Themen 2
M priority scheduling in Linux Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
L Super User via Processbuilder (Linux) Allgemeine Java-Themen 3
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
J Linux .jar beim Start automatisch ausführen Allgemeine Java-Themen 6
J ASCM - In Linux öffnen Allgemeine Java-Themen 3
L Tesseract-OCR 4.0 unter Linux funktioniert nicht Allgemeine Java-Themen 3
J Sound mit Clip in Linux abspielen Allgemeine Java-Themen 3
K USB infos unter Linux abfragen? Allgemeine Java-Themen 2
N Lizenzensierung von Java Programmen unter Linux Allgemeine Java-Themen 3
P OneWire Java Linux Allgemeine Java-Themen 11
R probleme beim starten von jar unter linux Allgemeine Java-Themen 2
A Linux bash script ausführen Allgemeine Java-Themen 16
C Windows RCP Application unter Linux bauen lassen Allgemeine Java-Themen 3
D jnativehook auf Linux Allgemeine Java-Themen 1
A Linux: Native Library mit Rootrechten ohne Prozess mit sudo zu starten Allgemeine Java-Themen 1
F Linux & NetBeans: Datei in Systemverzeichnis schreiben? Allgemeine Java-Themen 1
E Sonderzeichen nicht setzbar: Großes Problem bei Programmierung unter Linux Mint mit Virtual Box Allgemeine Java-Themen 5
F URI Schema in Linux erstellen? Allgemeine Java-Themen 3
D Problem VLC4J Raspbian(Linux) Allgemeine Java-Themen 0
M Code läuft unter windows aber nicht unter Linux Allgemeine Java-Themen 6
F.S.WhiTeY JDK installieren Linux: Nach Update link auf Java zerschossen Allgemeine Java-Themen 4
M Java auf Linux und Windows Allgemeine Java-Themen 6
D pfad zur jre linux Allgemeine Java-Themen 8
B Ordner öffnen mittels Java in Linux-Umgebung Allgemeine Java-Themen 7
P Eclipse Unter Windows erstelle .jar unter Linux (Ubuntu) funktioniert nicht Allgemeine Java-Themen 5
G Linux/C++/Pthreads auf JVM zugreifen, thread safe? Allgemeine Java-Themen 10
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
G RXTX native library unter Linux in jar build angeben Allgemeine Java-Themen 4
R Umlautproblem unter Linux Allgemeine Java-Themen 10
Gossi Mit Java auf Linux- & Windowssysteme zugreifen? Allgemeine Java-Themen 4
T Jar File läuft unter Windows aber nicht unter linux Allgemeine Java-Themen 10
Z Probleme bei Stringvergleichen (Windows/Linux) Allgemeine Java-Themen 10
M Linux Rechner per ssh runterfahren mit Java Allgemeine Java-Themen 8
F Process.getInputStream unter Linux Allgemeine Java-Themen 7
J Java programm lässt sich in win7 nach linux install nicht mehr ausführen Allgemeine Java-Themen 18
G Input/Output URLDecoder.decode - Unterschiedliche Ergebnisse Windows / Linux Allgemeine Java-Themen 2
G Java und Syslog (Linux) Allgemeine Java-Themen 3
T Javaprogramm unter Linux auf bestimmten Kern starten/laufen lassen ? Allgemeine Java-Themen 22
D Unix/Linux Benutzer-Authentifikation über Java Allgemeine Java-Themen 3
B JNA, Linux und die Smart Card Allgemeine Java-Themen 2
P Runnable Jar File über Windows ausführbar doch über Linux nicht Allgemeine Java-Themen 8
C RXTX Treiber einbinden für Linux Allgemeine Java-Themen 6
C Datei auslesen wie unter Linux mit "tail -f" Allgemeine Java-Themen 3
E Linux Cups Allgemeine Java-Themen 6
S Verhalten von System.getenv() in Ubuntu / Linux Allgemeine Java-Themen 12
T linux problem mit Desktop.getDesktop().open(..) Allgemeine Java-Themen 5
lordcarlos Runtime exec und mplayer (linux) Allgemeine Java-Themen 11
J dialogys unter linux Allgemeine Java-Themen 4
S Problem beim Drucken auf Netzwerkdrucker unter Linux Allgemeine Java-Themen 9
B Linux: Bash von Java aus aufrufen Allgemeine Java-Themen 10
T System Preferences + LInux (Ubuntu) Allgemeine Java-Themen 8
R Timing-Problem (?) Linux versus Windows Allgemeine Java-Themen 13
F Document öffnen unter Linux Allgemeine Java-Themen 4
F Portzugriffe Java @Linux & Windows? Allgemeine Java-Themen 4
W Deployment unter Linux Allgemeine Java-Themen 17
D Mit Linux mehrere Kommandos in einem Subprozeß Allgemeine Java-Themen 3
E Erfahrung mit RXTX sowie Windows und Linux Allgemeine Java-Themen 9
J Externes Programm starten und stoppen (Linux) Allgemeine Java-Themen 3
B Programm läuft unter Linux, aber nicht unter Windows Allgemeine Java-Themen 3
J UTF-8 Sockets : Windows<->Linux Ein altes Problem Allgemeine Java-Themen 7
S Ausführbare Scriptdatei unter Linux erstellen Allgemeine Java-Themen 6
J Programm unter Linux starten Allgemeine Java-Themen 3
R Jar-File vom Linux Desktop durch ancklicken starten? Allgemeine Java-Themen 5
P Linux port Allgemeine Java-Themen 4
P CLASSPATH LINUX Allgemeine Java-Themen 9
L Programm läßt sich wegen Java unter Linux nicht starten Allgemeine Java-Themen 4
V JAR-File läuft unter Windows und Linux, aber nicht unter OSX Allgemeine Java-Themen 6
M Welches Linux zum Java testen? Allgemeine Java-Themen 5
D linux shell aus java öffnen Allgemeine Java-Themen 5
A Linux-Consolenbefehle über Java ausführen? Allgemeine Java-Themen 2
B Java Applikation incl. dll unter Linux ausführen? Allgemeine Java-Themen 11
G Java Socket langsam unter Linux Allgemeine Java-Themen 21
T *.jar applikationen auf Linux installieren Allgemeine Java-Themen 4
P jdic/Linux Allgemeine Java-Themen 2
G Linux Dateinamen Charset Probleme Allgemeine Java-Themen 8
Ark Linux: Shell-Skript zum Kompileren und Starten Allgemeine Java-Themen 4
M Eigenes Java-Server-Programm unter Linux steuern? Allgemeine Java-Themen 13
P linux + java :/ Allgemeine Java-Themen 11
G Läuft nicht unter Linux oO Allgemeine Java-Themen 10
S Java Entwicklungsumgebungen unter XP und Linux und weitere F Allgemeine Java-Themen 7
W Programm starten unter Linux Allgemeine Java-Themen 10
M Speicherverwaltung unter Linux Allgemeine Java-Themen 7
A Geschwindigkeit Java unter Linux Allgemeine Java-Themen 9
J jdic funktioniert unter Linux nicht Allgemeine Java-Themen 18
S Welche Javaversion ist in meinem Linux? Allgemeine Java-Themen 2
L Native Threads unter Linux? Allgemeine Java-Themen 2
V JVM OutofMemory Linux geht, windows nicht Allgemeine Java-Themen 3
L mit exec() befehl ausführen ( OS X / Linux) Allgemeine Java-Themen 8
B JMF -> Webcam (Linux) Allgemeine Java-Themen 14
B Java 6 unter Ubuntu (Linux) Allgemeine Java-Themen 4
B gibVerzeichnis() unter linux Allgemeine Java-Themen 9
D JMF unter Linux/Windows, nichts funktioniert Allgemeine Java-Themen 3
F Runtime.getRuntime().exec mit Linux und Leerzeichen Allgemeine Java-Themen 3
L javax.comm unter Linux Allgemeine Java-Themen 11
G Zugriff von Windows auf Linux Allgemeine Java-Themen 11
M Wie mit Dateipfaden zwischen Linux und WIndows hantieren? Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben