Permission denied Fehler in Java für den chmod-Befehl
Habe ich eine ausführbare Datei (ffmpeg), dass ich versuche, führen Sie mit einem Java-Programm auf einem Mac. Verwendet habe ich das Java-Programm um den Befehl zu senden chmod 777 /path/to/ffmpeg
, aber wenn ich versuche zu laufen, ffmpeg, bekomme ich die folgende Fehlermeldung:
java.io.IOException: Cannot run program "/Users/james/WalkTheHall/ffmpeg": error=13, Permission denied
Aber wenn ich chmod 777 /path/to/ffmpeg
vom Terminal auf meine eigene vor dem öffnen der Java-Anwendung, die den Befehl für ffmpeg läuft Prima in das Java-Programm.
Gibt es einen Unterschied zwischen aufrufen chmod
innerhalb der Java Programm und den Aufruf auf meinen eigenen? Warum wird es nicht funktionieren? Danke!
vielleicht haben Sie die ausführbare java-Datei mit einem Benutzer, der nicht über die Berechtigungen auf chmod der Datei
Details... ich weiß nicht auf Mac, sondern auf GNU/Linux als normaler Benutzer Sie nicht tun konnte
Details... ich weiß nicht auf Mac, sondern auf GNU/Linux als normaler Benutzer Sie nicht tun konnte
chmod 777
(einige Berechtigungen sind "maskiert"), so ist es möglich, wenn Sie versuchen, aus dem terminal, mit dem Sie in der Tat die Art der Benutzer, die können so etwas tun, während Sie laufen, die java als ein Benutzer, der nicht kann? (es ist auch möglich, dass die java-vm Tropfen privilegies, wenn die Ausführung als "power" - Nutzer, nur um die Sicherheit zu erhöhen)InformationsquelleAutor James Skidmore | 2010-06-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vermuten, dass
chmod
ist ein shell-Befehl nicht ausführbar ist. Versuchen Siechmod
durch Ihre Schale. Weitere details finden Sie hier: Aufrufen möchten, ein linux-shell-Befehle aus Javawhich chmod
sagt/bin/chmod
für mich also unter der bash-3.2.48 es ist eine ausführbare Datei und nicht um ein shell-builtin. Vielleicht was auch immer startet Java nicht haben es auf die ausführbare Suchpfad, aber das starten der shell ausgeführt, die die Benutzer-shell-Konfigurationsskripten Reparatur WEG.InformationsquelleAutor CarlG
Ich hatte gerade das gleiche problem in meinem code.
ich löste dies durch hinzufügen waitFor nach exec. Die "chmod" - Prozess ist nicht abgeschlossen, wenn der nächste Befehl ausgeführt wird. der code kann wie folgt Aussehen:
InformationsquelleAutor macrokigol
Ja, es ist ein Unterschied. Wenn Sie den Befehl ausführen aus dem terminal, es ist Sie, wer die Aktion durchführt, und damit es durchgeführt wird, unter Verwendung Ihrer Anmeldeinformationen. Die Java-Anwendung ausgeführt wird der Befehl mit der Java-Anwendung Berechtigungen. Dies ist zu verhindern, dass eine Anwendung aus ausführen und dann den gefährlichen, unerwünschten änderungen an der Datei system. Vielleicht kann jemand anders erarbeiten und eine Orientierung geben, eine Abhilfe für dieses.
Sicher nicht. Wie es scheint, dies sollte nicht erlaubt werden, durch design, wie ShinTakezou Kommentar auf Ihre Frage erklärt, aus Gründen der Sicherheit. Haben Sie versucht, CarlG Antwort? Wenn es funktioniert auf Linux, dann auf jeden Fall wäre es einen Versuch Wert, auf Mac OS.
InformationsquelleAutor Ryan Hayes
Ich bin derzeit an einem Projekt arbeiten, macht auch die Verwendung von FFMpeg auf OSX. Ich Speichere FFMpeg in das GLAS und entpacken Sie es und legen Sie ausführbare Datei auf verwenden, wie Sie scheinen, zu tun. Dies ist, was ich Tue, und es scheint zu funktionieren.
Der code ist GPL, so fühlen sich frei, check it out. Es ist nicht die schönste ab, und auch die FFMpeg-Sachen ist vielleicht zu Komplex, aber es funktioniert.
Quelle ist sichtbar bei http://korsakow.net
Diese beiden Dateien insbesondere könnte interessant sein für Sie
FFMpegEncoderOSX.java
FileUtil.java
InformationsquelleAutor putgeminmouth
Versuchen Sie dies:
InformationsquelleAutor Jefferson Lima