Веб-корень vertx в Fat Jar

#java #vert.x

#java #vert.x

Вопрос:

Я создаю fat jar для приложения Vertx-Web. Я хотел бы обслуживать некоторые статические файлы. Я упаковал файл jar в папку webroot. Смотрите скриншот ниже для моей структуры jar:

введите описание изображения здесь

Я смог загрузить webroot/static/test.html файл, выполнив:

 routingContext.response().sendFile("webroot/static/test.html");
  

Однако я не могу заставить статический обработчик работать. Ниже приведен мой полный код:

 package com.jdescript;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.http.HttpServer;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.StaticHandler;

public class WebVerticle extends AbstractVerticle {
    private HttpServer httpServer;

    @Override
    public void start() throws IOException {
        httpServer = vertx.createHttpServer();

        Router router = Router.router(vertx);
        router.route("/static/*").handler(StaticHandler.create());

        router.route("/test").handler(routingContext -> {
            routingContext.response().sendFile("webroot/static/test.html");
        });

        httpServer.requestHandler(router::accept).listen(9999);
    }
}
  

В приведенном выше примере http://localhost:9999/static/test.html скажет «Не найдено», в то время как http://localhost:9999/test окажет test.html .

Любая помощь будет оценена.

Ответ №1:

Был дан ответ группой Vert.x по адресу https://groups.google.com/forum/?fromgroups #!тема/vertx/yKInZuYcqDE. Мой веб-корень должен выглядеть так «webroot/test.html «, вместо «webroot/static/test.html «.