abby Geschrieben 2. Juli 2015 Geschrieben 2. Juli 2015 Ich versuche gerade den Linux find Befehl in Java aufzurufen (um das ganze später zu erweitern und das Ergebnis in eine SQL DB zu schreiben) Wenn ich jetzt ganz einfach Befelhe wie "ls -la" ausführe funktioniert das auch ohne Probleme. Sobald ich aber den find Befehl einfüge, der in der Konsole super funktioniert, bekomme ich nichts zurück, weder Ausgabe noch Fehlermeldung. Vielleicht kann sich ja jemand mal mein geschreibsel anschauen und mir sagen wo denn der Haken ist. vielen Dank schonmal =) Code: public class Testerei { public static void main(String[] args) { Testerei obj = new Testerei(); // String command = "find /mnt/pres/pdf -type f -iname '*.pdf'"; String command = "ls -la"; String output = obj.executeCommand(command); System.out.println(output); } private String executeCommand(String command) { StringBuffer output = new StringBuffer(); Process p; try { p = Runtime.getRuntime().exec(command); p.waitFor(); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = ""; while ((line = reader.readLine())!= null) { output.append(line + "\n"); } } catch (Exception e) { e.printStackTrace(); } return output.toString(); } } Zitieren
Gooose Geschrieben 2. Juli 2015 Geschrieben 2. Juli 2015 Java Programming: call an exe from Java and passing parameters sollte in die Richtung gehen. Schau dir die Doku zu Process an. Wenn dein eigentliches Ziel ist, Text in eine Datenbank zu schreiben, würde ich mich auf dieses Ziel konzentrieren (McIlroy: A Quarter Century of Unix) find /mnt/pres/pdf -type f -iname '*.pdf' | java Testerei Zitieren
Tom87 Geschrieben 2. Juli 2015 Geschrieben 2. Juli 2015 Hi abby, habe leider selten Berührungspunkte mit direkten Shell aufrufen aus Java aber vielleicht kann ich dir trotzdem ein bisschen helfen. Soweit ich die exec() Methode verstehe ruft diese nicht direkt die Shell auf sondern führt einen Prozess aus. Umgebungsvariablen kannst du selbst per Parameter setzen. Runtime (Java Platform SE 7 ) Du könntest dein find auch in ein Shell Script packen und dieses dann über Java aufrufen. Dadurch sollte nach meinem Verständnis erst die Shell aufgerufen werden und das find tatsächlich auch dort ausgeführt werden... Hoffe es hilft dir ein bisschen weiter Zitieren
lilith2k3 Geschrieben 2. Juli 2015 Geschrieben 2. Juli 2015 Ohne mir jetzt arg den Kopf zerbrechen zu wollen, was warum und wie... Vorschlag: mach doch einen redirect vom find in ein tmp-file und lies es nach erfolgreichem find einfach mit java ein. Zitieren
abby Geschrieben 3. Juli 2015 Autor Geschrieben 3. Juli 2015 Hat alles geklappt, dass der find Befehl nicht ausgeführt wurde lag wohl an Berechtigungen die vergessen worden sind...^^ Trotzdem vielen Dank für eure Antworten. =) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.