Tomcat以Windows服务运行时调用JAR写入FTP遇权限拒绝的解决方法
解决Tomcat服务运行JAR无法写入远程共享目录的权限问题
兄弟,这问题我碰到过好几次!Windows服务模式下的Tomcat默认用的账户权限很低,导致没法访问远程共享目录,给你几个靠谱的解决步骤:
1. 修改Tomcat服务的运行账户
这是最核心的解决办法,因为默认的Local System账户基本没权限访问网络共享:
- 按
Win + R输入services.msc打开服务管理器 - 找到你的Tomcat服务(比如叫「Apache Tomcat 9.0」),右键选「属性」
- 切到「登录」标签页,选「此账户」,然后输入一个拥有远程共享目录写入权限的Windows账户(比如你平时登录电脑用的账户,或者专门建的服务账户)
- 输入账户密码后点「应用」「确定」,重启Tomcat服务
- 划重点:这个账户必须在远程服务器的共享目录权限里被明确授予「写入」权限,不然还是会报错
2. 检查远程共享目录的权限配置
别光改Tomcat的账户,远程那边的权限也要配好:
- 登录到11.4.0.122服务器,找到
resultfolder文件夹,右键「属性」→「共享」→「高级共享」 - 确保文件夹已经开启共享,然后在「权限」里添加刚才Tomcat用的账户,给它「完全控制」或「写入」权限
- 再切到「安全」标签页,同样添加该账户,授予「写入」「修改」等必要权限(这里的权限是NTFS权限,和共享权限都要配置)
3. 确认程序里的路径写法
你示例里的路径是\11.4.0.122\resultfolder,这不对!正确的SMB共享路径得是双反斜杠开头:\\11.4.0.122\resultfolder。虽然CMD里可能能识别单斜杠,但Tomcat的Java环境下大概率会解析错误,检查下program1.jar里的路径是不是写错了。
4. 提前测试权限(避坑推荐)
用刚才给Tomcat设置的那个账户登录Windows,打开CMD运行program1.jar,看能不能正常写入远程目录:
- 如果能,说明权限没问题,重启Tomcat就好
- 如果还是不行,那就是远程目录的权限没配置到位,回去再检查步骤2
要是你说的FTP是真正的FTP服务(不是SMB共享),那可能还要检查FTP客户端的被动模式配置,但你CMD运行正常,所以大概率就是服务账户的问题,先按上面的步骤来!
内容的提问来源于stack exchange,提问作者Kamil Evo
相关产品推荐
相关产品推荐

