只要它回答了标准的json请求,我的vertx实例就可以正常工作。一旦我尝试了文件上传(已经在其他vertx项目中工作),我在Vertx的BodyHandlerImpl中得到了一个NPE。 context.vertx()
返回null:
SEVERE: Unexpected exception in route
java.lang.NullPointerException
at io.vertx.ext.web.handler.impl.BodyHandlerImpl$BHandler.<init>(BodyHandlerImpl.java:124)
at io.vertx.ext.web.handler.impl.BodyHandlerImpl.handle(BodyHandlerImpl.java:65)
at io.vertx.ext.web.handler.impl.BodyHandlerImpl.handle(BodyHandlerImpl.java:40)
at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:217)
at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:78)
...
您可以在此处克隆最小示例以重现错误:https://github.com/cburnicki/vertx-file-upload-test
答案 0 :(得分:3)
您Vert.x Web Router
不能是Verticle类的最终成员:
public class MainApiVerticle extends AbstractVerticle {
final Router router = Router.router(vertx); // vertx field is not set yet
// ...
}
创建时,未部署Verticle,因此父类的vertx
字段仍为null
。
如果您需要它作为字段,请使用start
方法初始化它:
public class MainApiVerticle extends AbstractVerticle {
Router router;
@Override
public void start(Future<Void> startFuture) throws Exception {
router = Router.router(vertx);
// ...
}
}