jetty锁定文件问题
最近在开发中遇到一个问题,webpack打包失败,报以下错误:
Error: UNKNOWN: unknown error, open 'C:\xxx\yyy\zzz.js' at Error <native>
- 分析
由于在不启动服务的情况下使用webpack打包是正常的,所以觉得应该与jetty有关。通过查找资料,最后发现是jetty锁定了静态资源文件。
- 原因
在windows系统中,jetty默认在内存中映射了这些文件, 而windos会锁定内存映射的文件。
-
解决方法:
- 为了方便开发,我就直接修改了我本地的 jetty-webapp-9.4.0.M1.jar 中的webdefault.xml文件,路径如下:
jetty-webapp-9.4.0.M1.jar\org\eclipse\jetty\webapp\webdefault.xml
在此文件中搜索 useFileMappedBuffer,将它的值改为false即可。
<init-param> <param-name>useFileMappedBuffer</param-name> <param-value>false</param-value> </init-param>
改完后重启服务,再使用webpack打包时即可正常
- 网上还有第二种方式(未亲测):
修改WEB-INF/web.xml文件,在其中加入以下配置:<servlet> <servlet-name>default</servlet-name> <init-param> <param-name>useFileMappedBuffer</param-name> <param-value>false</param-value> </init-param> </servlet>