SpringBoot项目执行gradle bootRun时遭遇IOException:无法删除目录
SpringBoot项目执行gradle bootRun时遭遇IOException:无法删除目录
我特别理解刚接触SpringBoot就遇到这种构建报错的烦躁感,你已经尝试了不少常规方法,咱们再从几个容易忽略的角度来排查解决:
彻底关闭IDE并重启:VS Code的Java语言服务(Java Language Server)有时候会在后台悄悄占用编译生成的class文件,哪怕你关闭了终端,这个服务还可能在运行。建议完全关闭VS Code(包括后台进程),过几秒再重新打开项目,然后尝试执行
gradle bootRun。手动强制删除目标目录:试试用管理员权限打开命令提示符,执行下面的命令直接强制删除被占用的目录:
rmdir /s /q "C:\Users\victo\OneDrive\Desktop\expense_tracker\expense_tracker_backend\build\classes\java\main"删完之后再重新运行构建命令,看是否能正常执行。
把Gradle构建目录移出OneDrive同步路径:OneDrive的实时同步很容易锁定正在生成或修改的文件,哪怕你暂停了同步,可能还有残留的进程在监控目录。你可以在项目的
build.gradle里手动指定一个不在OneDrive下的构建目录,比如:buildDir = file("$projectDir/../gradle-build-output")这样构建产物就会生成在项目外的独立文件夹里,避开OneDrive的干扰。
用Windows资源监视器排查进程占用:有时候你很难直观看到哪个进程在占用文件,Windows自带的资源监视器可以帮你精准定位:
- 按下
Win + R,输入resmon打开资源监视器 - 切换到「CPU」标签,在「关联的句柄」搜索框里输入你的目标目录路径
- 找到对应的进程后,右键选择「结束进程」,之后再尝试构建。
- 按下
分开执行clean和bootRun命令:有时候直接执行
gradle bootRun会让clean和构建的进程产生冲突,你可以先单独执行:gradle clean等clean执行完成后,再执行
gradle bootRun,看看是否能成功。
希望这些方法能帮你解决问题,如果还有其他细节可以补充,咱们再接着排查~
备注:内容来源于stack exchange,提问作者Victor Jimenez
相关产品推荐
相关产品推荐

