2015-08-25 16 views
10

Come avviare un semplice server Vert.x dall'interno di IntelliJ IDEA?Come avviare il server Vert.x da IntelliJ IDEA?

mio build.gradle è come qui sotto:

apply plugin: 'java' 

version = '3.0.0' 

repositories { 
    mavenCentral() 
} 

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

mio VertX server, MyVertex.java è come qui sotto:

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); 
    } 
} 

E la mia configurazione di esecuzione IntelliJ è come sotto, con io.vertx.core.Starter come classe principale: enter image description here

Ma quando lo eseguo con la mia configurazione di esecuzione ottengo questo messaggio di errore :

Error: Could not find or load main class run 

è l'opzione VM (in configurazione Run) run qualcosa che ho bisogno di installare ed aggiungere al mio percorso o come faccio a iniziare con lo sviluppo Vert.x-server?

+0

non dovrebbe in 'VM Options' essere solo il tuo nome della classe? – injecteer

+0

@injecteer: quindi viene visualizzato questo messaggio di errore: 'Errore: impossibile trovare o caricare la classe principale com.example.MyVerticle' – Jonas

+0

In questa pagina è" eseguito "come Opzione VM https://github.com/vert- x3/vertx-examples/tree/master/gradle-verticles/gradle-verticle – Jonas

risposta

18

Sto usando vertx 3.2.1 e si lamenta di io.vertx.core.Starter. È deprecato ora. Quindi, si dovrebbe usare io.vertx.core.Launcher.

Questo è un esempio di lanciare via IntelliJ con la possibilità di specificare un file di configurazione JSON:

  • principale Classe: io.vertx.core.Launcher
  • VM Options: <up to you, or leave blank>
  • Argomenti del programma: run com.app.verticle.MyVerticle -conf /path/to/my_config.json

Quando si utilizza un framework di registrazione, verrà aggiunto in Opzioni VM come di seguito.

Log4j sia con log4j o 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 
4

Ah, il mio errore:

run com.example.MyVerticle dovrebbe essere il valore di argomenti del programma: e non come opzioni VM nella configurazione IDEA IntelliJ Run.

1

È necessario utilizzare questo: org.vertx.java.platform.impl.cli.Starter come classe principale in IntelliJ IDEA; e se stai usando argomenti e cose del genere potresti voler usare qualcosa come: runmod <groupId>~<artifactId>~<version> [-conf src/main/resources/your_config.json -cp]

Dai un'occhiata a questo project.

Per Vert.x 3.0.0 è necessario utilizzare questo: io.vertx.core.Starter come classe principale e run com.example.other.AnyVerticle come argomenti del programma.

+1

'io.vertx.core.Starter' è stato deprecato in vert.x 3.2; utilizzare 'io.vertx.core.Launcher' invece. – jwd630

6

Basta aggiungere questo al vostro MyVerticle (o di una classe separata):

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

Quindi semplicemente Ctrl+Shift+F10 per eseguirlo e IntelliJ creerà automaticamente lo Run Configuration.

0

È possibile semplicemente aggiungere un main e utilizzare deployVerticle() e quindi da lì in IntelliJ è possibile eseguirlo o eseguirne il debug facilmente. Con deployVerticle, è possibile passare una nuova istanza della vostra principale/bootstrap verticle oppure si può passare yourMainVerticle.class

public class VertxVerticleMain { 

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

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

    } 
}