天天看点

在IDEA使用jetty插件出现 cannot save the file的错误

BUG描述

在用maven开发时使用了jetty插件进行测试,在做web开发的时候,发现一旦修改css文件,IDEA就会出现以下错误提示。

Cannot delete temporary file D:\IdeaProjects\bookshop\bookshopmainprogram\src\main\webapp\css\jsp\user.css___jb_old___.
           

之后就会生成一个文件在原有css文件目录下。

解决方法

出现该bug之后在网上寻找解决方法

https://blog.csdn.net/hynet/article/details/8646644

我是参考这篇文章解决的。问题主要是因为jetty使用了内存映射文件来缓存静态文件,但是在windows下使用内存映射文件会使得文件被锁定,所以可以通过配置jetty,让他不使用内存映射文件。

由于版本有差异,所以配置jetty取消内存映射文件的步骤有略微不同。

以下是我的插件版本

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>9.4.11.v20180605</version>
</plugin>
           

我在.m2\repository\org\eclipse\jetty\jetty-webapp\9.4.11.v20180605路径下找到了jetty-webapp-9.4.11.v20180605.jar的jar包,然后解压后修改了在\org\eclipse\jetty\webapp下的webdefault.xml文件。将useFileMappedBuffer的值改为false。

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