首页 > 学院 > 开发设计 > 正文

jetty java文件无法删除 java文件占用 delete无效 运行时锁定静态资源的解决方法

2019-11-14 21:12:44
字体:
来源:转载
供稿:网友
jetty java文件无法删除 java文件占用 delete无效 运行时锁定静态资源的解决方法 前几天jetty下发现java无法删除文件,文件操作后一直被jvm占用,无奈换了tomcat问题消失。 今天又想起来,尝试网上的解决方法,经本人试验,直接修改配置文件有时不能生效,具体原因不清楚,建议使用直接修改web.xml文件 下文中的红色部分

  文件被锁定是由于在使用windows系统时,jetty默认在内存中映射了这些文件,而windows会锁定内存映射的文件。解决的办法就是修改jetty的配置,让其在启动server时将useFileMappedBuffer标志位设置为false。

  设置方法有两种,一种是修改webdefault.xml文件中的useFileMappdBuffer标志位。webdefault.xml文件是jetty启动服务的配置文件,其先于项目中的WEB-INF/web.xml文件被加载。 jetty包中默认有这个文件,可以将其提取出来,保存在项目根目录下,并修改useFileMappedBuffer节点。

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

  然后在build.gradle加入对此文件的引用。

123
[jettyRun, jettyRunWar,jettyStop]*.with {  webDefaultXml = file("${rootDir}/webdefault.xml")}

  第二种方法是修改项目中的WEB-INF/web.xml文件,在其中加入这个节点。

123456789
<servlet>    <!-- Override init parameter to avoid nasty -->    <!-- file locking issue on windows.         -->    <servlet-name>default</servlet-name>        <init-param>            <param-name>useFileMappedBuffer</param-name>            <param-value>false</param-value>        </init-param></servlet>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表