Как запустить сервер Vert.x от IntelliJ IDEA?

Как мне запустить простой сервер Vert.x внутри IntelliJ IDEA?

Мой build.gradle выглядит следующим образом:

apply plugin: 'java'

version = '3.0.0'

repositories {
    mavenCentral()
}

dependencies {
    compile 'io.vertx:vertx-core:3.0.0'
}

Мой Vertx-сервер, MyVertex.java выглядит следующим образом:

package com.example;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;

public class MyVerticle extends AbstractVerticle {

    @Override
    public void start(Future<Void> fut) {
        vertx.createHttpServer()
                .requestHandler(r -> r.response().end("<h1>Hello</h1>"))
                .listen(8081);
    }
}

И моя конфигурация запуска IntelliJ такова, как показано ниже, с io.vertx.core.Starter в качестве основного класса: введите описание изображения здесь

Но когда я запускаю его с моей конфигурацией запуска, я получаю это сообщение об ошибке:

Error: Could not find or load main class run

Является ли опция VM (в конфигурации запуска) run чем-то, что мне нужно установить и добавить на мой путь или как начать работу с разработкой Vert.x-сервера?

Ответ 1

Я использую vertx 3.2.1 и жалуюсь на io.vertx.core.Starter. Теперь это устарело. Таким образом, следует использовать io.vertx.core.Launcher.

Это пример запуска через intellij с возможностью указания файла конфигурации JSON:

  • Основной класс: io.vertx.core.Launcher
  • Параметры VM: <up to you, or leave blank>
  • Аргументы программы: run com.app.verticle.MyVerticle -conf /path/to/my_config.json

При использовании структуры ведения журнала он будет добавлен в VM Options, как показано ниже.

Log4j с лог4j или slf4j delgate:

-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.Log4jLogDelegateFactory -Dlog4j.configuration=log4j.xml

-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory -Dlog4j.configuration=log4j.xml

Logback:

-Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory -Dlogback.configurationFile=logback.xml

Ответ 2

Просто добавьте это в свой MyVerticle (или отдельный класс):

import io.vertx.core.Launcher;
...
public static void main(final String[] args) {
    Launcher.executeCommand("run", MyVerticle.class.getName());
}

Затем просто Ctrl+Shift+F10, чтобы запустить его, и IntelliJ автоматически создаст Run Configuration.

Ответ 3

А, моя ошибка:

run com.example.MyVerticle должно быть значением аргументов программы, а не параметрами VM в конфигурации запуска IntelliJ IDEA.

Ответ 4

Вы должны использовать это: org.vertx.java.platform.impl.cli.Starter в качестве основного класса в IntelliJ IDEA; и если вы используете аргументы и что-то подобное, вы можете использовать что-то вроде: runmod <groupId>~<artifactId>~<version> [-conf src/main/resources/your_config.json -cp]

Посмотрите на этот проект.

Для Vert.x 3.0.0 вы должны использовать это: io.vertx.core.Starter как ваш основной класс и run com.example.other.AnyVerticle в качестве аргументов вашей программы.

Ответ 5

Вы можете просто добавить главное и использовать deployVerticle(), а затем оттуда в IntelliJ вы можете легко запустить или отладить его. С deployVerticle вы можете передать новый экземпляр вашей главной/загрузочной вершины или вы можете передать yourMainVerticle.class

public class VertxVerticleMain {

    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();

        vertx.deployVerticle(new MyVerticle());
       //vertx.deployVerticle(MyVerticle.class);

    }
}