天天看點

在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>