将webdefault.xml文件中jetty默认的DefaultServlet里加入useFileMappedBuffer参数的配置。
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>
</init-param>
修改为false就好了。 因为true的时候,jetty会采用内存映射的方式将文件锁定,所以每次就需要重启了。
具体可见jetty源码:
if (_useFileMappedBuffer && resource.getFile()!=null)
return BufferUtil.toBuffer(resource.getFile());
public static ByteBuffer toBuffer(File file) throws IOException
{
RandomAccessFile raf = new RandomAccessFile(file,"r");
MappedByteBuffer buffer=raf.getChannel().map(MapMode.READ_ONLY,0,raf.length());
return buffer;
}