На моем 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
Какие-либо предложения? Спасибо.
.app
на самом деле является не исполняемым файлом, а каталогом. Вы можете запустить его только с помощью команды оболочкиopen
Mac, которая знает, где найти фактический ресурс для запуска. - person RealSkeptic   schedule 06.11.2018