在Mac上,我有一个Java例程,该例程编写一个文件,然后调用macOS应用程序。这个应用程式会读取刚建立的档案。
Java返回错误号13 “权限被拒绝” 。但是,当我查看文件权限时,用户具有读取/执行权限。
从Java应用程序调用的MacOS应用程序是:
`/ Users / giorgio / Applications / KeySetter.app``
File.canExecute()
返回true。 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
有什么建议吗?谢谢。