Разрешение отклонило ошибку в Java для команды chmod

У меня есть исполняемый файл (ffmpeg), что я пытаюсь работать с программой Java на Mac. Я использовал программу Java для отправки команды chmod 777 /path/to/ffmpeg, но когда я пытаюсь выполнить ffmpeg, я получаю следующую ошибку:

java.io.IOException: Cannot run program "/Users/james/WalkTheHall/ffmpeg": error=13, Permission denied

Но когда я работаю chmod 777 /path/to/ffmpeg от Терминала самостоятельно прежде, чем открыть JAVA-приложение, команда к ffmpeg будет работать очень хорошо в программе Java.

Есть ли различие между вызовом chmod из программы Java и вызова его самостоятельно? Почему это не будет работать?Спасибо!

11
задан Raedwald 19 July 2013 в 23:30
поделиться

3 ответа

Я предполагаю, что chmod - это команда оболочки, а не исполняемый файл. Попробуйте запустить chmod через вашу оболочку. Подробнее см. Здесь: Хотите вызвать команду оболочки Linux из Java

4
ответ дан 3 December 2019 в 07:10
поделиться

Да, разница есть. Когда вы запускаете команду с терминала, это вы выполняете действие, и, следовательно, оно выполняется с использованием ваших учетных данных. Приложение Java выполняет команду, используя разрешения приложения Java. Это сделано для предотвращения запуска приложения и последующего внесения опасных и нежелательных изменений в файловую систему. Возможно, кто-то другой может уточнить и дать рекомендации по обходному пути для этого.

4
ответ дан 3 December 2019 в 07:10
поделиться

В настоящее время я работаю над проектом, который также использует FFMpeg на OSX. Я храню FFMpeg в JAR, извлекаю его и устанавливаю исполняемый файл при использовании, как вы, похоже, делаете. Вот что я делаю, и это, кажется, работает.

public static void setExecutable(File file, boolean executable)
{
    Process p = Runtime.getRuntime().exec(new String[] {
        "chmod",
        "u"+(executable?'+':'-')+"x",
        file.getAbsolutePath(),
    });
    // do stuff to make sure p finishes & capture output
}

Код под GPL, так что не стесняйтесь проверять его. Это не самая приятная кодовая база, и даже FFMpeg, возможно, слишком сложна, но она работает.

Источник доступен по адресу http://korsakow.net

Эти два файла, в частности, могут быть вам интересны

FFMpegEncoderOSX.java

FileUtil.java

2
ответ дан 3 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: