Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ResourceHandler使用jetty 9停止托管文件-404未找到错误(使用jetty 8可以正常工作)_Java_Eclipse_Jetty - Fatal编程技术网

Java ResourceHandler使用jetty 9停止托管文件-404未找到错误(使用jetty 8可以正常工作)

Java ResourceHandler使用jetty 9停止托管文件-404未找到错误(使用jetty 8可以正常工作),java,eclipse,jetty,Java,Eclipse,Jetty,显然,ResourceHandler停止使用jetty 9托管文件-404未找到错误(使用jetty 8可以正常工作)。代码如下: ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setDirectoriesListed(true); resourceHandler.setResourceBase("some_resource_base"); HandlerList

显然,
ResourceHandler
停止使用jetty 9托管文件-404未找到错误(使用jetty 8可以正常工作)。代码如下:

    ResourceHandler resourceHandler = new ResourceHandler();
    resourceHandler.setDirectoriesListed(true);
    resourceHandler.setResourceBase("some_resource_base");

    HandlerList handlerList = new HandlerList();
    handlerList.setHandlers(new Handler[]{servletHandler, resourceHandler});
    server.setHandler(handlerList);
    server.start();

假设
servletHandler
ServletContextHandler

(注意:最好不要是实际的
ServletHandler
,因为它是一个内部类,不能直接实例化)

然后将永远不会调用
resourceHandler
,因为
ServletContextHandler
链末尾的
DefaultServlet
处理(或
Default404Servlet
)将始终响应,甚至不允许执行
resourceHandler


如果您有一个
ServletContextHandler
,不要使用
ResourceHandler
ServletContextHandler
中使用
DefaultServlet
来设置和服务您的静态文件。

如果有人正在寻找一个工作示例,这就是我将ResourceHandler与ContextHandler组合的方式(部分基于当前码头文件:)


示例不完整,什么是
servletHandler
?这是我一直在寻找的。希望它也能在这个线程上帮助其他人。谢谢Joakim。
        srv = new Server();
        ServerConnector srvConn = new ServerConnector(srv);
        srvConn.setHost("localhost");
        srvConn.setPort(8080);
        srvConn.setIdleTimeout(30000);
        srv.addConnector(srvConn);
        //used for webSocket comm later:
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");

        //for static  content:
        ResourceHandler resH = new ResourceHandler();
        resH.setDirectoriesListed(true);
        resH.setWelcomeFiles(new String[]{ "index.html" });
        resH.setResourceBase("./my/web/root");
        ContextHandler resCtx = new ContextHandler();
        resCtx.setHandler(resH);

        //Add both ContextHandlers to server:
        ContextHandlerCollection handlers = new ContextHandlerCollection(resCtx, context);
        srv.setHandler(handlers);