IntelliJ IDEA插件安装报错:`java.nio.file.AccessDeniedException`的解决方案

 更新时间:2026年07月29日 08:33:15   作者:李少兄  
在IDEA中安装或更新插件时遇到java.nio.file.AccessDeniedException报错?本文深度解析该异常的根因,指出90%的情况是文件被占用,而非简单的权限不足,从关闭进程、手动清理插件目录到排查安全软件拦截,提供由易到难的修复方案,需要的朋友可以参考下

0. 导读(TL;DR:急着用先看这里)

这条报错的本质不是插件损坏,也不是网络问题,而是 IDE 在更新/安装插件时,无法覆盖或删除某个 .jar 文件,被 操作系统拒绝了写入操作。

一句话结论:那个 annotations-24.0.1.jar 要么正被某个进程占用,要么当前用户没有写权限,要么被安全软件/只读属性锁住

最快的修复路径(90% 的情况到此为止)

  1. 关闭所有 IDE 窗口,并在任务管理器中结束全部 idea64.exe / java.exe / fsnotifier.exe 进程;
  2. 手动删除插件目录 E:\soft\idea\plugins\xxx
  3. 重启 IDE,重新安装/更新该插件。

若仍失败,再按本文第 4 节“由易到难”的方案逐项叠加(管理员运行、关杀软、修权限、查句柄、离线安装)。

1. 问题现象

1.1 报错信息完整还原

在 IDE 中安装或更新某个插件后,弹出如下对话框:

┌─ Plugin Installation Problem ──────────────────────────────── ✕ 
│   The IDE failed to install or update some plugins.           │
│    Please try again, and if the problem persists, report it    │
│    to the support.                                             │
│                                                                │
│    The cause: java.nio.file.AccessDeniedException:             │
│    E:\soft\idea\plugins\xxx\lib\            │
│    annotations-24.0.1.jar                                      │
│                              [ 确定 ]                          │
└────────────────────────────────────────────────────────────────┘

1.2 触发场景

  • Settings / Preferences → Plugins安装更新某个插件(本例为第三方插件 xxx)时;
  • 或 IDE 启动时自动应用上次挂起的插件更新时;
  • 或通过 Install Plugin from Disk 安装本地插件包、触发依赖刷新时。

1.3 表现与影响

  • 弹窗提示安装/更新失败,点击“确定”后插件处于未安装 / 未更新 / 半安装的不一致状态;
  • 反复点击重试通常无效,因为根因(占用/权限)并未改变;
  • 一般不影响 IDE 其它已安装功能的正常使用,但该插件不可用。

2. 报错信息逐段解读

要正确排错,先看懂报错的每一部分。

2.1 标题与提示语

  • Plugin Installation Problem:插件安装/更新流程整体失败的统一提示,是一个“结果性”描述,不含根因。
  • The IDE failed to install or update some plugins.:注意是 some(部分),说明可能只影响了这一个插件,其它插件也许已成功。
  • Please try again, and if the problem persists, report it to the support.:官方建议先重试;但盲目重试无意义,必须先消除根因。

2.2 异常类型java.nio.file.AccessDeniedException

  • 它来自 JDK 的 NIO.2java.nio.file 包),是 FileSystemException 的子类,表示一次文件系统操作(创建、写入、删除、重命名、复制等)被 操作系统层面拒绝
  • 在插件安装流程中,IDE 需要把新版本文件写入/替换/删除到插件目录,这一步调用 NIO 文件 API 时触发了该异常。
  • 弹窗中 The cause: 后面跟的,正是 IDE 捕获到的根因异常toString(),即“异常类型 + 出错的目标路径”。

2.3 路径各段含义

E:\soft\idea\plugins\xxx\lib\annotations-24.0.1.jar
└─①─┘└──②──┘└────────③────────┘└④┘──────────⑤──────────┘
内容含义
E:\soft\ideaIDE 的安装/配置根目录(用户自定义安装到了 E 盘)。
plugins插件安装目录,每个插件一个子文件夹。
xxx出问题的插件目录(一个第三方 AI 类插件)。
lib该插件的依赖库目录,存放其运行所需的 .jar
annotations-24.0.1.jar具体出错的 jar——JetBrains 的 org.jetbrains:annotations 注解库,版本 24.0.1。

解读结论:IDE 在更新该插件时,试图替换/删除 lib 下的 annotations-24.0.1.jar 失败。问题就锁定在这一个文件的“可写/可删”状态上。

2.4 一个常被误解的关键点:AccessDenied≠ 一定是“权限不足”

这是本文最容易被忽略、却最影响排错方向的一点:

  • Linux/macOS 上,AccessDeniedException 通常确实对应权限(EACCES)。
  • 但在 Windows 上,Java 的 NIO 会把多种底层错误码统一映射为 AccessDeniedException,其中既包括真正的权限拒绝 ERROR_ACCESS_DENIED (5)也包括文件共享冲突 ERROR_SHARING_VIOLATION (32)——即“文件正被另一个进程以不兼容的共享模式打开”。

因此,在 Windows 上看到 AccessDeniedException第一嫌疑应是“文件被占用”,其次才是“权限/只读/杀软”。把方向一上来就押在“提权/改权限”上,往往会做无用功。下文的原因排序与方案排序,正是基于这一事实。

3. 根因分析

发生概率从高到低,归纳为以下五类。理解机制有助于你“对症下药”,而非逐个盲试。

3.1 原因一:文件被进程占用(共享冲突)——最高频

机制:插件更新时,IDE 需要删除或覆盖旧 jar。但若有进程正持有该文件的句柄(handle),且其打开时的共享模式不允许他人删除/写入,Windows 就会拒绝本次操作,NIO 抛出 AccessDeniedException

谁在占用?常见“嫌疑人”:

  • 另一个 IDE 实例:你同时开着多个 IDEA 窗口,或同时开着其它 JetBrains IDE,它们可能已加载该插件并持有其 jar;
  • 残留/后台进程:可见窗口已关,但 idea64.exejava.exefsnotifier.exe、索引/编译进程、或上次崩溃残留进程仍在运行;
  • 外部程序:资源管理器的预览/缩略图、压缩软件、文本编辑器、其它 JVM 进程等偶然打开了该 jar。

这也是为什么“关掉窗口再重试”常常无效——窗口关了,进程未必退干净

3.2 原因二:权限不足 / ACL 限制 / 所有者问题

  • 当前登录用户对 E:\soft\idea\plugins(或其子目录/文件)没有“写入/修改/删除”权限
  • 目录或文件的所有者Administrators / TrustedInstaller / 其它用户,而当前用户仅有读取权限;
  • IDE 以普通用户身份运行,无法对受 ACL 保护的路径执行写操作。

典型场景:插件目录曾被以管理员身份创建/复制,导致普通用户进程写不进去。

3.3 原因三:文件/目录被设为“只读”

  • 该 jar 或其上级目录带有只读属性,写/删操作被拒绝;
  • 从某些压缩包解压、或经某些同步/备份工具还原的目录,常会带上只读标记。

3.4 原因四:安全软件实时防护拦截

  • Windows Defender360、火绒、电脑管家等的“实时保护/文件防护”,会在文件被写入的瞬间短暂持有句柄或直接拦截.jar 的写/删操作;
  • 部分杀软对“可执行/可加载文件”(jar 属于此类)的写入尤为敏感,从而触发访问拒绝或共享冲突。

这是 Windows 上该报错的高频元凶之一,且表现具有“偶发性”——同一操作时灵时不灵,正是杀软扫描时机不同所致。

3.5 原因五:上次安装残留 / 目录状态不一致

  • 上一次安装/更新异常中断(崩溃、强退、断电),留下半成品目录或被锁文件;
  • 目录中存在重复版本的 jar、空目录、或符号链接/硬链接残留,导致替换逻辑失败。

3.6 原因—对策对照表

根因典型特征对应方案(见第 4 节)
文件被占用关窗口仍报错;删除文件提示“正在使用”方案一、二、七
权限/ACL/所有者提权后能成功;目录由管理员创建方案四、五
只读属性文件属性勾选了“只读”方案五
杀软拦截操作时灵时不灵;关实时防护后成功方案六
残留/状态不一致反复更新失败;目录内容异常方案三、八

4. 解决方案

总原则:先做“无副作用”的(关进程、清目录),再做“临时改变环境”的(提权、关杀软),最后做“修改系统状态”的(改 ACL/所有者)。每完成一步即可重试安装验证,命中即停。

方案一:彻底结束 IDE 及相关进程后重试 ✅ 首选

目的:消除“文件被本 IDE 自身进程占用”。

  1. 关闭所有 JetBrains IDE 窗口;
  2. Ctrl + Shift + Esc 打开任务管理器 → “详细信息”选项卡;
  3. 结束以下全部相关进程(若存在):
    • idea64.exe(或其它 IDE 主进程,如 webstorm64.exe
    • java.exe / javaw.exe(IDE 启动的 JVM,注意:若你本机还跑着其它 Java 程序,请甄别,避免误杀)
    • fsnotifier.exe / fsnotifier64.exe(文件系统监视器)
    • 任何名称含该 IDE 的残留进程;
  4. 回到 IDE 重新启动,再次执行安装/更新。

提示:若不确定哪些 java.exe 是 IDE 的,最稳妥的做法是保存好工作后直接重启电脑,再立刻重试(见方案七)。

方案二:精准定位并解除文件占用 ✅ 专业推荐

当方案一后手动删除该 jar 仍提示“被占用”,说明有“隐藏”进程持有句柄。用以下任一方法揪出它。

方法 A:Windows 自带“资源监视器”(无需第三方工具)

  1. Win + R → 输入 resmon → 回车,打开资源监视器
  2. 切到 CPU 选项卡 → 展开 “关联的句柄”
  3. 在“搜索句柄”框中输入文件名关键字,如 annotations-24.0.1.jarcalex-javaai
  4. 在结果列表中即可看到持有该句柄的进程名与 PID
  5. 右键该进程 → 结束进程(确认非关键进程后操作)。

方法 B:Sysinternals Process Explorer / Handle(微软官方工具)

  • Process Explorer:菜单 Find → Find Handle or DLL… → 输入 annotationscalex-javaai → 定位到进程与句柄,可关闭句柄或结束进程;
  • 命令行 handle.exe(需管理员命令提示符):
handle.exe -a annotations-24.0.1.jar
  • 查到 pid 与句柄值后,谨慎关闭:
handle.exe -c <句柄值> -p <pid> -y

⚠ 直接关闭句柄有风险,可能导致持有进程异常;优先结束整个进程,仅在进程不可结束时才关句柄。

方法 C:PowerToys 的 File Locksmith

  • 安装 PowerToys 后,右键该 jar → File Locksmith → 直观列出占用进程并支持结束。

解除占用后,重试安装,或继续方案三删除目录。

方案三:手动清理插件目录后重装 ✅ 高成功率

目的:清除“残留/状态不一致”,让 IDE 从零安装。

先确保已执行方案一(无 IDE 进程占用);

在资源管理器中删除整个插件目录

E:\soft\idea\plugins\xxx

或使用命令行(先确认路径无误,删除不可恢复):

rmdir /s /q "E:\soft\idea\plugins\xxx"

PowerShell 等价命令:

Remove-Item -LiteralPath "E:\soft\idea\plugins\xxx" -Recurse -Force

说明:-Force 可删除只读文件,但无法删除正被占用的文件;若仍报“正在使用”,回到方案二解除占用,或采用方案七重启后删除。

  1. 重启 IDE → 在插件市场重新搜索并安装该插件,或重新执行更新。

进阶:若仅该 jar 异常而目录其它部分正常,也可只删 lib\annotations-24.0.1.jar 后重试;但整目录删除更彻底,推荐整删。

方案四:以管理员身份运行 IDE(讲清适用边界)

目的:解决“权限/ACL/所有者”类根因。

  • 右键 IDE 快捷方式 → 以管理员身份运行 → 再执行安装/更新。

适用边界(务必理解,避免误判)

  • ✅ 当根因是 ACL 权限不足 / 所有者受限 / 受保护目录 时,提权通常立竿见影
  • ❌ 当根因是 文件被占用 时,提权无效——管理员也删不掉正被占用的文件;
  • 安全建议:仅用于排错不建议长期以管理员身份运行 IDE(扩大攻击面、插件获得过高权限)。问题解决后改回普通用户运行。

判断技巧:若“普通用户失败、管理员成功”,基本可锁定为权限类问题,随后用方案五从根本上修正权限,而非依赖提权。

方案五:修正只读属性与目录 ACL 权限

目的:从根上修复“只读 / 权限 / 所有者”问题,使普通用户也能正常读写插件目录。

(1) 去除只读属性(图形界面)

  • 右键 E:\soft\idea\plugins → 属性 → 取消勾选 只读 → 应用时选择 “将更改应用于此文件夹、子文件夹和文件”

(1’) 去除只读属性(命令行,递归)

attrib -r "E:\soft\idea\plugins\*.*" /s /d

(2) 取得所有权(当所有者非当前用户时)
管理员命令提示符执行:

takeown /f "E:\soft\idea\plugins" /r /d y

(3) 授予当前用户完全控制(ACL)

icacls "E:\soft\idea\plugins" /grant "%USERNAME%:(OI)(CI)F" /t /c
  • (OI)(CI):使权限继承到子对象与子容器;F:完全控制;/t:递归;/c:遇错继续。
  • 若只想重置为继承自父目录的权限:
icacls "E:\soft\idea\plugins" /reset /t /c

⚠ 修改 ACL 属于系统级操作,请仅针对插件目录执行,切勿对系统盘根目录或 C:\Windows 误操作。

完成后,以普通用户重启 IDE 重试,验证是否已无需提权即可安装。

方案六:临时关闭安全软件实时防护

目的:排除杀软拦截/锁句柄。

  1. 临时关闭 Windows Defender 的“实时保护”,或第三方杀软(360/火绒等)的“实时防护/文件防护”;
  2. 重试安装/更新;
  3. 成功后立即重新开启防护。

若关闭后成功,说明即杀软所致。长期对策:将 IDE 安装目录与插件目录 E:\soft\idea 加入杀软的信任区/排除项,既避免复发,又不必长期裸奔。

方案七:重启系统后立即处理 ✅ 兜底大招

目的:用“干净启动态”一举清除所有占用与临时锁。

  1. 重启电脑(不是关机再开,注意 Win10/11 的“快速启动”可能不彻底释放,必要时选择“重启”而非“关机”);
  2. 重启后不要打开任何 IDE,第一时间:
    • 删除插件目录(方案三),或
    • 直接以管理员/普通用户打开 IDE 重试安装;
  3. 此法对“占用类”问题几乎百试百灵

方案八:改用离线 / 磁盘安装插件

目的:绕开在线更新流程中“边下载边替换”的脆弱环节。

  1. 在 IDE 中先卸载该插件 → 重启 IDE;
  2. 用浏览器访问 JetBrains 插件市场对应插件页面,下载与当前 IDE 版本匹配的 .zip 安装包;
  3. IDE 中 Settings → Plugins → ⚙ 齿轮图标 → Install Plugin from Disk… → 选择该 zip → 安装 → 重启。

注意:下载的 zip 不要解压,直接选 zip 文件安装;并确认插件版本与你的 IDE 版本兼容,否则可能安装后无法启用。

附:推荐排查决策流程

开始
 ├─ 关所有 IDE 窗口 + 任务管理器结束相关进程(方案一)→ 重试 ──成功─▶ 结束
 ├─ 仍失败:手动删插件目录(方案三)
 │     ├─ 删除成功 → 重启 IDE 重装 ──成功─▶ 结束
 │     └─ 删除提示“被占用” ──▶ 查句柄(方案二)或 重启电脑(方案七)后删
 ├─ 仍失败:以管理员运行 IDE(方案四)重试
 │     ├─ 成功 ──▶ 说明是权限问题 ──▶ 用方案五根治权限,改回普通用户
 │     └─ 失败 ──▶ 临时关杀软(方案六)重试
 └─ 仍失败:改用离线安装(方案八)/ 检查插件与 IDE 版本兼容性

5. 验证是否修复

  • 弹窗不再出现
  • Settings → Plugins → Installed 中该插件显示为已启用且版本为目标新版本
  • 插件目录 E:\soft\idea\plugins\xxx\lib\annotations-24.0.1.jar 存在且时间戳为最新,无 .tmp / 残留旧版本文件;
  • IDE 的 Help → Show Log in Explorer 打开 idea.log,搜索 AccessDeniedException / calex-javaai无新增报错

6. 预防与最佳实践

  1. 更新插件前先关掉多余的 IDE 窗口,避免自占用;
  2. 将 IDE 与插件目录加入杀软排除/信任列表,减少拦截与偶发锁文件;
  3. 插件目录不要设为只读,并保证当前用户对其有完全控制权限;
  4. 尽量避免长期以管理员身份运行 IDE;如需把 IDE 装到非系统盘,安装时即规划好目录权限;
  5. 更新失败后不要无脑反复重试,先看 idea.logThe cause,按根因处理;
  6. 重要环境可保留插件 zip 备份,便于离线回滚/安装
  7. 保持 IDE 与插件版本兼容,跨大版本升级插件前先查兼容矩阵。

7. 常见问题 FAQ

Q1:为什么我关了 IDEA 窗口,删除文件还是提示“被占用”?
A:窗口关闭 ≠ 进程退出。后台可能残留 idea64.exe / java.exe / fsnotifier.exe,或被其它程序/杀软持有句柄。请用任务管理器结束进程,或用资源监视器/Process Explorer 查句柄(方案二)。

Q2:AccessDeniedException 不就是没权限吗?为什么我改了权限还不行?
A:在 Windows 上该异常也代表文件共享冲突(被占用),并非只有权限一种含义(见 2.4 节)。若改权限无效,应转向“占用/杀软”方向。

Q3:以管理员运行能解决,但我不想一直用管理员,怎么办?
A:这正说明根因是权限/所有者。用方案五的 takeown + icacls 把插件目录的所有权与完全控制权授予当前用户,之后即可普通用户正常运行与更新。

Q4:删掉插件目录会不会丢配置/影响其它插件?
A:删除的是单个插件的目录,不影响其它插件。该插件自身的设置若存于 IDE 配置目录(config/options 等)通常保留;即便丢失,多为该插件自身配置,重装后可编辑恢复,风险可控。

Q5:Remove-Item -Force 为什么删不掉?
A:-Force 只解决“只读”,不解决“占用”。被占用时需先解除占用(方案二/七)。

Q6:弹窗里写的是 some plugins,会不会还有别的插件也失败了?
A:有可能。到 Plugins → Installed 检查是否有插件处于异常/未更新状态;并查看 idea.log 中是否还有其它 AccessDeniedException 或安装失败记录,一并按本文方法处理。

以上就是IntelliJ IDEA插件安装报错:`java.nio.file.AccessDeniedException`的解决方案的详细内容,更多关于IntelliJ IDEA插件安装报错的资料请关注脚本之家其它相关文章!

相关文章

  • Java 十进制转二、八、十六进制的字符串

    Java 十进制转二、八、十六进制的字符串

    本文主要介绍了十进制转二进制;十进制转八进制;十进制转十六进制的方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Java CompletableFuture使用方式

    Java CompletableFuture使用方式

    这篇文章主要介绍了Java CompletableFuture使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java中Scanner的使用及nextLine和nextInt等混用报错解决方案

    Java中Scanner的使用及nextLine和nextInt等混用报错解决方案

    Scanner类用于从控制台输入数据,常用方法包括next()、nextLine()、nextInt()、nextDouble()和nextBoolean(),案例测试和常见错误情况分析表明,nextDouble等方法不会跳过空格和回车,而nextLine会读取整行并跳到下一行
    2026-03-03
  • Java 中的HashMap详解和使用示例_动力节点Java学院整理

    Java 中的HashMap详解和使用示例_动力节点Java学院整理

    这篇文章主要介绍了Java 中的HashMap详解和使用示例_动力节点Java学院整理,需要的朋友可以参考下
    2017-05-05
  • 计算一个Java对象占用字节数的方法

    计算一个Java对象占用字节数的方法

    这篇文章主要介绍了计算一个Java对象占用字节数的方法,较为详细的分析了Java中各类对象所占用的字节数,需要的朋友可以参考下
    2015-01-01
  • java数据随机分页实现方案

    java数据随机分页实现方案

    本文主要介绍了java数据随机分页实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • SpringMVC中@Valid不起效BindingResult读取不到Error信息

    SpringMVC中@Valid不起效BindingResult读取不到Error信息

    在写SpringMVC项目时,由于要对表单数据进行校验,需要使用@Valid进行校验,但是在进行数据校验时,BindingResult对象无法拦截非法表单数据,result.hasErrors()无论怎么输入都会返回false,本文详细的介绍一下解决方法
    2021-09-09
  • Java 日期时间处理详解(API、格式化)

    Java 日期时间处理详解(API、格式化)

    在编程中,对日期和时间的处理是一个非常重要的方面,Java提供了丰富的类和工具来处理日期和时间,本文将对Java中的日期时间处理进行详细介绍,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • spring配置不扫描service层的原因解答

    spring配置不扫描service层的原因解答

    这篇文章主要介绍了spring配置不扫描service层的原因解答,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Spring Security实现登录认证实战教程

    Spring Security实现登录认证实战教程

    这篇文章主要介绍了Spring Security实现登录认证实战教程,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-06-06

最新评论