【问题标题】:Jooby Webserver Always throwing error "406 Not acceptable: text/html"Jooby Webserver 总是抛出错误“406 Not Acceptable: text/html”
【发布时间】:2019-06-28 14:09:33
【问题描述】:

我正在设置一个简单的 Jooby 网络服务器。我有一个 App.java 和一个 home.html 文件。现在,我唯一想做的就是,如果你打开主页,它会显示一个 html 页面,上面写着“Hello World”。 但是,我总是收到错误“org.jooby.Err: Not Acceptable(406): text/html”。

我通过 maven 使用原型创建了项目,但我也尝试使用 gradle 创建它。我在 IntellIJ IDEA 中使用 Java 8 运行程序。我已经尝试过使用不同的 HTML 文件,但我认为它没有任何问题,因为如果我将它作为原始字符串返回,它可以工作(我只是不想这样做,因为我不会能够正常使用 JavaScript 和图像文件)。我也尝试在单独的类中执行此操作,使用 get() 方法执行此操作,并且尝试不返回 Result 而是执行 response.send(result)。

这是我的代码:

home.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
</head>
<body>
    Hello World!
</body>
</html>

App.java:

public class App extends Jooby {
    {
        get("/", req -> {
            //Line that throws the error:
            return Results.html("home").put("model", new Object());
        });
    }

    public static void main(final String[] args) {
        run(App::new, args);
    }
}

我显然希望它只显示“Hello World”文本,但它显示了一个带有以下堆栈跟踪的屏幕:

org.jooby.Err: Not Acceptable(406): text/html

at org.jooby.internal.AbstractRendererContext.render(AbstractRendererContext.java:280)

at org.jooby.internal.ResponseImpl.send(ResponseImpl.java:562)

at org.jooby.Response.send(Response.java:624)

at org.jooby.Route$OneArgHandler.handle(Route.java:2000)

at org.jooby.internal.RouteImpl.handle(RouteImpl.java:282)

at org.jooby.internal.RouteChain.next(RouteChain.java:262)

at org.jooby.Route$Chain.next(Route.java:2345)

at org.jooby.internal.HttpHandlerImpl.handle(HttpHandlerImpl.java:497)

at org.jooby.internal.netty.NettyHandler.channelRead0(NettyHandler.java:271)

at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)

at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:38)

at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:353)

at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:66)

at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)

at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)

at java.lang.Thread.run(Thread.java:748)

【问题讨论】:

    标签: java html webserver http-status-code-406 jooby


    【解决方案1】:

    Results.html 需要template engine。如果你只想显示一个静态页面,试试这个:

    {
      assets("/", "index.html");
    }
    

    index.html 文件必须位于类路径的根目录。

    【讨论】:

    • 非常感谢!我不是在寻找静态页面,但使用模板引擎它就像一个魅力!
    猜你喜欢
    • 2014-11-12
    • 2016-02-21
    • 2021-01-21
    • 2012-06-24
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    相关资源
    最近更新 更多