究其緣由,這是 Jetty 使用了內存映射文件來緩存靜態文件。在Windows下面,使用內存映射文件會致使文件被鎖定。
解決方案是不使用內存映射文件來作緩存。步驟以下: css
根據所使用 Jetty 版本在本地的 maven 倉庫中找到 Jetty 版本對應的jar包。 html
如:
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
</plugin>
</plugins> java
則需找到( 個人本地的 maven 倉庫是在 D:\Repositories\Maven ):
D:\Repositories\Maven\org\mortbay\jetty\jetty\6.1.10\jetty-6.1.10.jar web
用解壓縮工具打開此jar包,進到:
jetty-6.1.10.jar\org\mortbay\jetty\webapp
找到webdefault.xml文件,即: jetty-6.1.10.jar\org\mortbay\jetty\webapp\webdefault.xml
解壓出此文件webdefault.xml,找到:
<param-name>useFileMappedBuffer</param-name>
<param-value>true</param-value> apache
將 true 改爲 false,以禁止使用映射緩存。 緩存
刪除原jar包中的webdefault.xml文件,將修改過的webdefault.xml文件壓縮進去,OK。搞定。 服務器
這樣以後就能在 Jetty 運行時修改並保存資源文件。