java в разрешении macOS отказано

На моем Mac у меня есть подпрограмма Java, которая записывает файл, за которым следует вызов приложения macOS; это приложение читает только что созданный файл.

Java возвращает ошибку 13 "Отказано в доступе". Однако, когда я смотрю на права доступа к файлам, у пользователя есть права на чтение/выполнение.

Приложение MacOS, вызываемое из приложений Java:

`/Users/giorgio/Applications/KeySetter.app``

File.canExecute() возвращает истину. Верно также File.canRead() и File.canWrite().

Я также переписываю разрешение с помощью этой процедуры:

List<String> chPermList = new LinkedList<String>();
chPermList.add("/bin/chmod");
chPermList.add("777");
chPermList.add(pathAndfile);
changePermissionToFileAndVerifyEsit(chPermList);
private void changePermissionToFileAndVerifyEsit(List chPermList) {
     try {
        ProcessBuilder pb = null;
        pb = new ProcessBuilder(chPermList);
        pb.redirectErrorStream(true);

        Process p = pb.start();

        BufferedReader br = new BufferedReader(new InputStreamReader(p
                    .getInputStream()));

        p.waitFor();

        if(p.exitValue()!=0) {
            Message.showErrorMessage("The permission change failed with exit value" + p.exitValue(), "KeySetter.app");
            System.exit(-5);
        }   else {
            System.out.println("Modify permissions (777)");
        }         
     } catch (IOException | InterruptedException e) {
         Message.showErrorMessage("Error in permissions for file", "KeySetter.app");
         System.exit(-6);
     }        
}

После этого я вызываю приложение macOS с помощью:

Process process = Runtime.getRuntime().exec( this.pathCommandApplication );

и верните мне эту ошибку:

java.io.IOException: Cannot run program "/Users/giorgio/Applications/KeySetter.app": error=13, Permission denied

Какие-либо предложения? Спасибо.


person Giorgio A.    schedule 06.11.2018    source источник
comment
Обычно Mac .app на самом деле является не исполняемым файлом, а каталогом. Вы можете запустить его только с помощью команды оболочки open Mac, которая знает, где найти фактический ресурс для запуска.   -  person RealSkeptic    schedule 06.11.2018
comment
Спасибо RealSkeptic, я изменил вызов своего приложения в ProcessBuilder (открыть... и все отлично работает.   -  person Giorgio A.    schedule 06.11.2018