原因是Jetty会使用内存映射文件来缓存静态文件,其中包括js、css文件。在Windows下面,使用内存映射文件会导致文件被锁定。解决方案是不使用内存映射文件来做缓存。步骤如下:
1)在所使用Jetty版本的jar中找到webdefault.xml,把它拷贝到项目中,比如src/main/resources/webdefault.xml。
webdefault.xml文件在jetty-server-xxxx包 org\eclipse\jetty\webapp里
2)找到webdefault.xml文件里的useFileMappedBuffer参数,把值设成false。
3)在pom.xml中,设置jetty使用更新过的webdefault.xml文件。
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.x</version>
<configuration>
<scanIntervalSeconds>10</scanIntervalSeconds>
<webApp>
<defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor>
</webApp>
</configuration>
</plugin>
这样在运行时就可以修改js、css等文件了。