0

我在 Windows 7 上使用 Eclipse IDE 和嵌入式 Jetty Server。

我可以通过启动码头运行该应用程序并在我的浏览器中毫无问题地查看它。

但是,如果我在我的应用程序中编辑“webapp”文件夹中的文件,例如 JavaScript 文件,我会收到以下错误

Could not write file: sample.js
sample.js (The requested operation cannot be performed on a file with a user-mapped section open)

如果我停止 Jetty,我可以保存文件。那么有没有办法阻止 Jetty 锁定文件呢?

这是我在 JettyServer.java 中创建 WebApp 上下文的方法

private static WebAppContext createWebapp() {
    String webAppDir = "src/main/webapp/";
    WebAppContext webApp = new WebAppContext();
    webApp.setContextPath(CONTEXT_PATH);
    webApp.setResourceBase(webAppDir);
    webApp.setParentLoaderPriority(true);
    return webApp;
}
4

2 回答 2

1

这是 windows 环境中码头的常见问题。你应该按照这个 指令来保存文件而不关闭码头服务器。

于 2012-11-28T22:08:45.590 回答
0

您可以通过将默认 servlet 的 useFileMappedBuffer 设置为 false 来关闭此行为。这样做有点棘手。

private static WebAppContext createWebapp() {
    String webAppDir = "src/main/webapp/";
    WebAppContext webApp = new WebAppContext();
    webApp.setContextPath(CONTEXT_PATH);
    webApp.setResourceBase(webAppDir);
    webApp.setParentLoaderPriority(true);

    webApp.setInitParam(
        "org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");

    return webApp;
}

DefaultServlet 将寻找它自己的 useFileMappedBuffer 副本,该副本似乎设置在 Jetty 的深处。但是通过在属性名称前面加上上述前缀,这个值是首选的。

于 2014-09-01T15:16:07.160 回答