Java 不兼容类型:单一<;HttpServer>;无法转换为Completable
我试图在verticle中的Vert.x中使用Java 不兼容类型:单一<;HttpServer>;无法转换为Completable,java,rx-java2,vert.x,Java,Rx Java2,Vert.x,我试图在verticle中的Vert.x中使用RxJava2: import io.reactivex.Completable; import io.vertx.core.Promise; public class MainVerticle extends io.vertx.reactivex.core.AbstractVerticle { @Override public Completable rxStart() { return vertx.createHttpSer
RxJava2
:
import io.reactivex.Completable;
import io.vertx.core.Promise;
public class MainVerticle extends io.vertx.reactivex.core.AbstractVerticle {
@Override
public Completable rxStart() {
return vertx.createHttpServer().requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
})
.rxListen(8080);
}
}
委员会抱怨:
error: incompatible types: Single<HttpServer> cannot be converted to Completable
.rxListen(8080);
^
1 error
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.
错误:不兼容的类型:无法将Single转换为Completable
.rxListen(8080);
^
1错误
失败:生成失败,出现异常。
*出了什么问题:
任务“:compileJava”的执行失败。
>编译失败;有关详细信息,请参阅编译器错误输出。
我不知道应该调用哪个方法。或者将此
公共可完成rxStart()
更改为公共单一rxStart()
,然后订阅它,或者尝试类似的操作
Single<HttpServer> rxListen(int port,String host)
public class MyVerticle extends AbstractVerticle {
private HttpServer server;
public void start(Future<Void> startFuture) {
server = vertx.createHttpServer().requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
});
// Now bind the server:
server.listen(8080, res -> {
if (res.succeeded()) {
startFuture.complete();
} else {
startFuture.fail(res.cause());
}
});
}
}
Completable single = server.rxClose();
// Subscribe to bind the server
single.
subscribe(
() -> {
// Server is closed
},
failure -> {
// Server closed but encoutered issue
}
);