Linux-Procedur ausführen

ceene

Erfahrenes Mitglied
Hallo ihr lieben

Ich habe mal ne mini-Frage. Wie kann ich denn eine Linux-Procedur unter Java ausführen?
Bisher hab ich schon ein paar Sachen durchprobiert aber nicht klappte.
Mein Code um zu schauen ob die Datei da ist und ob Sie ausführbar ist.
Code:
public void etl2()	{
		try {
			/*File file = new File("/home/prog/CMB/prc/test.prc");
			boolean test = file.exists();
			System.out.print(file.getName() + " " + test);
			test = file.canExecute();
			System.out.print(test);*/		
			Runtime.getRuntime().exec("/home/prog/CMB/prc/test.prc");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			facesMessages.add(e.getMessage());
		}
	}

Kann mir eventuell jemand weiterhelfen? Wie kann ich diese Datei ausführen?
 
Habe noch etwas rumprobiert aber bin nicht wirklich weiter gekommen.
Ich habe das ganze nun über den ProcessBuilder versucht, aber es passiert nichts.
Es kommt kein Fehler, aber die Prozedur wird auch nicht wirklich ausgeführt.

Muss ich noch irgendwelche Parameter übergeben? Wie user oder sowas?
Code:
ProcessBuilder pb = new ProcessBuilder("/home/prog/CMB/prc/test.prc");
Process process = pb.start();
 
Habe nochmal weiter probiert und habe nun endlich mal ne Fehlermeldung. Ich hoffe mir kann wer helfen. Wie bekomm ich die Prozedur zum laufen?
Code:
ProcessBuilder pb = new ProcessBuilder("test.prc");
pb.directory(new File("/home/prog/CMB/prc/"));
Process process = pb.start();

Die Fehlermeldung lautet:
Cannot run program "test.prc" (in directory "/home/prog/CMB/prc"): java.io.IOException: error=2, No such file or directory

Die Datei existiert aber 100%ig.
Leider wird weiter nichts ausgegeben, d.h. die Console bekommt keinen Eintrag.

Bin für jegliche Art von Hilfe sehr dankbar.
 
Hallo,

wie sieht den der Header der Datei prc aus? Wird dort auch die shell bzw. der Skript Interpreter referenziert?

Wenn nicht, stell dem Skript doch mal explizit einen Skript Interpreter voran:
new ProcessBuilder("/bin/bash","/foo/bar/script.sh");
Gruß Tom
 
Wenn ich die *.prc-Datei mit dem vi aufmache dann steht da folgende Zeile:
Code:
ls -lrt > test.out

Die Prozedur erzeugt lediglich ne neue Datei. Das ist auch noch nicht die Endgültige, da die noch geschrieben wird, aber ich wollte schonmal wenigstens die Grundsachen machen, wie überhapt ne Prozedur anzustarten.
 
Ich hab das jetzt mal so umgeschrieben, wie es in deinem Beispiel ist.

Code:
      try {			
			File file = new File("/home/prog/CMB/prc/test.prc");
			boolean test = file.exists();
			System.out.print(file.getName() + " " + test);	
			ProcessBuilder pb = new ProcessBuilder("bash", "/home/prog/CMB/prc/test.prc");
	        Process process = pb.start();
	        System.out.print(process.toString());

		} catch (Exception e) {
			// TODO Auto-generated catch block
			facesMessages.add(e.getMessage());
		}
	}

Die Ausgabe in der Console ist:
- test.prc true
- java.lang.UNIXProcess@41aca4fe

Mehr wird in der Console nicht ausgeben. Keine Fehlermeldung oder ähnliches.

Ich bin echt Ratlos, denn überall im Internet wird es auch auf diese Art gemacht, ich hoffe ihr könnt mir helfen.
 
Oh je ist mir das peinlich. Ich hab den Fehler gefunden. Es gab keinen Fehler.

Mein noch Unwissenheit hat mir das eingebrockt. Er hat die Prozedur die ganze Zeit ausgeführt. Ich hab nur im Flaschen Ordner nach dem Ergebniss gesucht.

Sry :confused:
 

Neue Beiträge

Zurück