jetty: 请求的操作无法在使用用户映射区域打开的文件上执行

用IntelliJ IDEA开发web项目使用Gradle/Maven的jetty插件跑的时候经常遇到项目启动后,无法编辑html、js等静态资源文件的情况。

后来又上网查了好多资料,才发现不是IDEA的问题,是jetty本身的问题:原因是如果NIO被支持的话,Jetty会使用内存映射文件来缓存静态文件,其中包括.js文件。在Windows下面,使用内存映射文件会导致文件被锁定。
解决方案是不使用内存映射文件来做缓存。

解决:
对于jetty6:
打开自己的maven本地仓库 .m2\repository\org\mortbay\jetty\jetty\6.1.25 修改 jetty-6.1.25.jar 中的org/mortbay/jetty/webapp/webdefault.xml 文件
jetty6

<init-param>
    <param-name>useFileMappedBuffer</param-name>
    <param-value>true</param-value>
</init-param> 
将param-value修改为false。如下:

<init-param>
   <param-name>useFileMappedBuffer</param-name>
   <param-value>false</param-value>
</init-param> 

对于jetty6以上:
D:\Java\gradle.gradle\caches\modules-2\files-2.1\org.eclipse.jetty\jetty-webapp\9.2.22.v20170606\1b512e26860e651567a35abd12cfa3772bc61902\jetty-webapp-9.2.22.v20170606.jar
即在\org\eclipse\jetty\webapp目录下

推荐使用Everything进行搜索。
Everything

IDEA的 Jetty Runner插件对应的位置:
Jetty Runner
修改同上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值