mcollovati/vertx-vaadin

Vaadin 14.2.0.beta1 is not starting

Dudeplayz opened this issue ยท 10 comments

Hi,
I have tried to use the new Vaadin version but getting the following error on startup:

------------------ Starting Frontend compilation. ------------------
2020-04-29 00:09:46 [vert.x-worker-thread-1] INFO  dev-webpack - Running webpack to compile frontend resources. This may take a moment, please stand by...
2020-04-29 00:09:50 [vert.x-worker-thread-1] INFO  dev-webpack - Started webpack-dev-server. Time: 41531957ms
Apr. 29, 2020 12:09:50 VORM. io.vertx.core.impl.DeploymentManager
SCHWERWIEGEND: NULL
java.lang.NullPointerException
	at com.vaadin.flow.server.startup.ClassLoaderAwareServletContainerInitializer.onStartup(ClassLoaderAwareServletContainerInitializer.java:82)
	at com.github.mcollovati.vertx.vaadin.VaadinVerticle.lambda$null$9(VaadinVerticle.java:288)
	at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$2(ContextImpl.java:316)
	at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:834)

Vertx-Vaadin-Flow: 14.1.1

It seems to be an error in my environment. I have tested it with 14.1.23 and 14.1.27 too. I will validate it tomorrow.

Thanks for reporting, will take a look at this ASAP

It's a bug in internal fake implementation of ServletContext. A fix is on the way

published 14.1.2-SNAPSHOT if you want to give it a try

It seems to work ๐Ÿ‘. Thanks for the fast fix ๐Ÿ˜„. I am curious about that I was previously on 14.1.23 and first after testing 14.2.0.beta1 it failed too. Can you explain this?

Since flow 2.1.7, shipped with vaadin 14.1.22, many ServletContextInitializers implements the newly introduced interface ClassLoaderAwareServletContainerInitializer, mentioned in javadoc as a workaround for vaadin/flow#7805; code in the interface default method gets the classloader from ServletContext object.

In vertx-vaadin there's a fake implementation of ServletContext that implements just a few methods of the interface. Unfortunately getClassloader was not implemented and returned null;
that's the reason of the NPE at runtime.

Ok, but why worked it with 14.1.23 before ๐Ÿค”. Maybe I forgot to clean up some caches and used the previous version.

I honestly don't know how it could have worked on 14.1.23 ๐Ÿ™‚

@Dudeplayz thanks again for reporting; If you need a stable release please let me know

Currently not, I will let you know if I need it before next release :). And also thanks again for the really fast fix and snapshot!