You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取user.dir下文件时遇java.io.FilePermission权限拒绝问题求助

解决Java读取文件时的AccessControlException权限问题

这是典型的JVM安全管理器限制导致的文件读取权限问题,结合你的Eclipse工作区读取文件场景,咱们一步步排查解决:

1. 先确认文件路径是否正确

你用System.getProperty("user.dir")获取的是Eclipse项目的工作目录,但可能存在路径拼接错误或者文件位置不对的情况:

  • 先临时添加代码打印实际路径,确认是否指向正确的文件:
    String fname = System.getProperty("user.dir") + "/Towary.txt";
    System.out.println("当前读取的文件路径:" + fname); // 打印后检查路径是否和实际文件位置一致
    
  • 注意Windows系统下路径分隔符可以用File.separator代替硬编码的/,避免跨平台问题:
    import java.io.File;
    // ...
    String fname = System.getProperty("user.dir") + File.separator + "Towary.txt";
    
  • 确保Towary.txt确实放在Eclipse项目的根目录下(不是src文件夹内部)。

2. 调整Eclipse的安全权限配置

如果你的程序是在启用了Java安全管理器的环境下运行,需要明确授予文件读取权限:

  • 打开Eclipse的运行配置:Run > Run Configurations,找到你的Java应用配置
  • 切换到Arguments标签页,在VM arguments输入框中添加权限配置参数:
    -Djava.security.policy=policy.policy
    
  • 在项目根目录创建一个policy.policy文件,内容如下:
    grant {
        // 授予读取当前工作目录下Towary.txt的权限
        permission java.io.FilePermission "${user.dir}/Towary.txt", "read";
    };
    
  • 如果你只是练习使用,也可以直接禁用安全管理器(仅用于测试环境),在VM arguments中添加:
    -Djava.security.manager=allow
    

3. 检查系统层面的文件权限

最后确认Windows系统中Towary.txt的权限设置:

  • 右键文件选择属性 > 安全标签页
  • 确保当前登录用户(或用户组)拥有读取该文件的权限,如果没有,手动添加读取权限即可。

内容的提问来源于stack exchange,提问作者Igor Nieradka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:06:36