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

Windows 10环境下可运行Jar文件无法写入.csv等常见扩展名文件的问题排查与解决

解决Jar运行时写入常见扩展名文件提示“访问被拒绝”的问题

问题回顾

你在Windows 10上用Eclipse开发Java项目,本地通过Eclipse运行主方法时,用FileWriter可以正常写入任意扩展名(甚至无扩展名)的文件;但导出为可运行Jar后,用java -jar命令执行时,只要目标文件是.csv、.txt、.doc这类常见扩展名,就会抛出访问被拒绝的FileNotFoundException,只有无扩展名或.foo这类自定义扩展名的文件能正常写入。

异常栈信息如下:

java.io.FileNotFoundException: csv\report.csv (Access is denied)
	at java.base/java.io.FileOutputStream.open0(Native Method)
	at java.base/java.io.FileOutputStream.open(FileOutputStream.java:291)
	at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:234)
	at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:123)
	at java.base/java.io.FileWriter.<init>(FileWriter.java:66)
	at project.TestRunner.createCSVFile(TestRunner.java:103)

排查过程与临时缓解

你最初尝试切换Java版本,从64位Java 16:

java version "16.0.2" 2021-07-20
Java(TM) SE Runtime Environment (build 16.0.2+7-67)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)

换成32位Java 8后,问题暂时消失:

java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) Client VM (build 25.301-b09, mixed mode, sharing)

最终根源与解决方案

经过进一步确认,问题的真正原因是过度防护的杀毒软件。很多杀毒软件(包括Windows Defender的严格防护规则)会将Jar程序写入常见文档格式的行为判定为潜在风险,从而拦截文件写入操作;而自定义扩展名或无扩展名的文件不在拦截范围内,所以可以正常写入。

针对这个问题,你可以尝试以下解决方法:

  • 检查杀毒软件的实时防护规则,查看是否存在针对Jar文件写入常见格式文件的拦截策略,调整或禁用该规则
  • 将你的可运行Jar文件添加到杀毒软件的信任列表/白名单中
  • 临时关闭杀毒软件的实时防护进行测试(测试完成后务必重新开启),确认是否是杀毒软件导致的拦截
  • 如果是企业级杀毒软件,联系IT管理员调整防护策略,允许该Jar文件的写入操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:24:06