究其缘由,这是 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 运行时修改并保存资源文件。