【问题标题】:Not able to create files and Folder on MAC using java applets - Operation not Permitted无法使用 java 小程序在 MAC 上创建文件和文件夹 - 不允许操作
【发布时间】:2014-07-21 07:14:30
【问题描述】:

操作不允许错误。

以前相同的代码可以正常工作。我希望最近 Mac OS 上的一些变化是导致它的原因。

Applet jar 已完美签名。所以我认为签名不是问题。

我正在尝试使用

在当前登录的用户目录下创建文件夹
    String userHomePath = System.getProperty("user.home");

    **new File(userHomePath +" path ").mkdirs() returns false**

因为它没有在其下创建文件/文件夹的权限

尝试了以下方法来设置权限,但失败并出现同样的“操作不允许错误”

//using PosixFilePermission to set file permissions 777
Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
//add owners permission
perms.add(PosixFilePermission.OWNER_READ);
perms.add(PosixFilePermission.OWNER_WRITE);
perms.add(PosixFilePermission.OWNER_EXECUTE);
//add group permissions
perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.GROUP_WRITE);
perms.add(PosixFilePermission.GROUP_EXECUTE);
//add others permissions
perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.OTHERS_WRITE);
perms.add(PosixFilePermission.OTHERS_EXECUTE);


Files.setPosixFilePermissions(Paths.get(path, ""), perms);

如果我在 Mac 上的 Java 类的 Main 方法上运行相同的文件夹创建代码,它会完美运行。而且,如果我使用 Eclipse IDE 上的导出选项为该小程序制作可运行的 jar,它工作正常。它能够在这两种情况下创建文件夹。

而且它也适用于 Windows 操作系统。

我搜索了使用 Java 小程序设置 MAC 权限,但找不到任何可行的解决方案。

我也尝试过像下面这样设置权限,它也会导致同样的错误“操作不允许”。

private static void createParent(File directory){
        String folderName = directory.getAbsolutePath();
        if(directory.exists()){
            String [] cmdArray = new String[2]; 
            cmdArray[0] = "chmod -R 4777 "+folderName; 
            Runtime rt = Runtime.getRuntime(); 
            try {
                Process proc = rt.exec(cmdArray);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }else{
            folderName = folderName.substring(0,folderName.lastIndexOf(File.separator));
            File file = new File(folderName);
            createParent(file);
            directory.mkdir();
            createParent(file);
        }
    }

【问题讨论】:

  • 小程序可以在 Windows 还是 Linux 上运行?
  • @ElliottFrisch :它在 Windows 上完美运行。而且我们不支持 Linux
  • 检查您的 java 安全设置。如果那是very high,则不能创建文件或文件夹。应该是high
  • @Rahul:我已经用“'Medium'”(可能的最低设置)验证了它。它失败。顺便说一句,感谢您的建议。

标签: java macos file security applet


【解决方案1】:

我找到了解决方法。 基本上浏览器设置需要更改。

Safari >首选项 > 安全 > 管理网站设置 > Java > 选择网站 > 选择“以不安全模式运行”而不是“允许”。

它会说“Java 设置为在某些网站的不安全模式下运行。处于不安全模式的插件可以访问您的文档和数据。”

它会发挥魅力。

【讨论】:

    【解决方案2】:

    “不允许操作” 这几乎可以解释它。不允许 Applet 更改客户端 PC 上的任何内容。此外,它们不允许连接到其他主机,除了它们开始的主机。

    【讨论】:

    • 但是以前可以使用相同的代码。现在 Windows 操作系统中也可以使用相同的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2021-01-18
    • 2018-02-15
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多