Java - Runtime.getRuntime().exec (), was ist Los?
Ich habe ein problem mit der Laufzeit.exec() im Java
Mein code:
String lol = "/home/pc/example.txt";
String[] b = {"touch", lol};
try {
Runtime.getRuntime().exec(b);
} catch(Exception ex) {
doSomething(ex);
}
Es funktioniert gut, aber wenn ich versuche changle variable "lol" - Dateien nicht erstellen Sie in der Festplatte
zum Beispiel:
String lol = x.getPath();
wo getPath() gibt String
Was soll ich tun ?
Danke für deine Antwort 🙂
- Noch nicht getan, eine Menge von Java auf Linux, aber möglicherweise ein Problem mit Berechtigungen -- vielleicht die sandbox lässt nicht zu, dass Sie Dateien außerhalb des home-Verzeichnis? Nur eine Vermutung, vielleicht etwas zu schauen.
- Thx für die Antwort aber ich chmod 777 und wenn ich das nicht verwenden getPath () - Datei auftauchen.
- Hinweis:
Runtime#exec()
nicht werfen eine Ausnahme, wenn der Befehl fehlgeschlagen ist. Sie möchten, um zu Lesen, Ihre Ausgabe oder Fehler stream. Siehe auch dieser link (alle 4 Seiten) javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die Lösung für Ihr problem . Ich Stand vor einem ähnlichen problem und dies war für mich von specefying die Ausgabe-Verzeichnis, es sollte führen Sie die Ausgabe Ihrer Dateien in das Arbeitsverzeichnis.
Verwenden Sie wahrscheinlich eine
java.io.File
In diesem Fall
getPath()
zurück nicht der absolute Pfad.Zum Beispiel:
Also, Schlussfolgerung: die Verwendung
java.io.File.getAbsolutePath()
.Tipp: es existiert auch eine
java.io.File.getAbsoluteFile()
Methode. Das liefert den absoluten Pfad beim AufrufgetPath()
.Gerade lese ich Ihren Kommentar zu der anderen Antwort:
Ich glaube, Sie hat:
Dies nicht funktioniert, weil das os sucht für eine Anwendung namens "
touch /home/pc/example.txt
".Nun, Sie werden denken "WTF? Warum?"
Da die Methode
Runtime.getRuntime().exec(String cmd);
teilt den string bis auf die Leerzeichen.Und
Runtime.getRuntime().exec(String[] cmdarray);
nicht es aufteilen. Also, Sie haben, um es selbst zu tun:Einfach mal auf die Inhalte von lol, wenn Sie angerufen
x.getPath()
. Ich würde vermuten, es ist nicht ein absoluter Pfad und die Datei wird erstellt, aber nicht, wo Sie es erwarten werden.Es
x
ist einJava.io.File
unsgetCanonicalPath()
für einen absoluten Pfad.Wenn der code funktioniert, wenn Sie die Zeichenfolge literal "/home/pc/example.txt" und x.getPath gibt auch den gleichen Wert haben, dann MUSS es funktionieren, so einfach ist das. Was bedeutet, dass x ist.getPath() ist tatsächlich wieder etwas anderes. Gibt es vielleicht Leerzeichen in den string? Versuchen Sie, vergleichen die Zeichenfolgen direkt:
wie schreiben Sie den code für real-Pfad
hier kann u get real-Pfad ..........